在这里,我正在尝试编写一个代码,该代码可以使用我提供的数据(如行、列和深度)为我编写和创建 JSON 文件。例如,我需要生成一个 10 x 10 x 10 的立方体。当我序列化它时,我也在代码中提供了统一检查器中的这些数据。我尝试在 for 循环中实现这一点并编写 JSON 文件。但我没有得到我想要的输出。我期望多维数据集位置不同的输出,而发生的事情是我的数据中的所有数据或多维数据集位置是我给出的数字之前的那个。也就是说,如果我将行、列和深度设为 10。所以对于整个 1000 个元素,我的数据就像 x: 9, y: 9, z:9。下面的图片更好地解释了。我知道我是在某些时候犯了错误,只是无法弄清楚在哪里。我在这里先向您的帮助表示感谢
public class JSONWriter : MonoBehaviour
{
[SerializeField] int rows , columns, depth = 10;
[SerializeField] float padding;
public enum CubeType
{
white,
yellow,
blue,
red,
green
}
private readonly IReadOnlyDictionary<CubeType, Color> colors = new Dictionary<CubeType, Color>
{
{CubeType.white, Color.white},
{CubeType.yellow, Color.yellow},
{CubeType.blue, Color.blue},
{CubeType.red, Color.red},
{CubeType.green, Color.green}
};
[System.Serializable]
public class CubeData
{
public Vector3 cubePosition;
public CubeType Cube;
}
[System.Serializable]
public class CubeDataList
{
public CubeData[] cubeDatas;
}
public void outputJSON()
{
string strOutput = JsonUtility.ToJson(myCubeDataList);
File.WriteAllText(Application.dataPath + "/Resources/10x10x10.txt", strOutput);
}
//CubeData myCubeData = new CubeData();
public CubeDataList myCubeDataList = new CubeDataList();
void Start()
{
for (int x = 0; x < myCubeDataList.cubeDatas.Length; x++)
{
//Debug.Log(myCubeDataList.cubeDatas.Length);
for (int i = 0; i < depth; i++)
{
for (int j = 0; j < columns; j++)
{
for (int k = 0; k < rows; k++)
{
myCubeDataList.cubeDatas[x].cubePosition = new Vector3(i, j, k) * padding;
//myCubeDataList.cubeDatas[x].Cube = Random.Range(CubeType, 3f);
}
}
}
}
}
}