json文件中的3d数组数据,我想在C# unity中读取内容

问题描述 投票:0回答:1

json文件内容:

{"values": [[[1.0, 2.0, 3.0], [4.0, 5.0, 6.0], [7.0, 8.0, 9.0]], [[10.0, 11.0, 12.0], [13.0, 14.0, 15.0], [16.0, 17.0, 18.0]], [[19.0, 20.0, 21.0], [22.0, 23.0, 24.0], [25.0, 26.0, 27.0]]]}
我想明智地读取此文件元素的内容。然后我想为此统一创建网格。

我正在使用此代码:

public class JsonDataread : MonoBehaviour
{
    [System.Serializable]
    public class DataObject
    {
        public float[][][] values; 
    }

    DataObject dataObject = new DataObject();

    void Start()
    {
          string jsonString  "Assets\\data\\array3d.json";

  string jsonString = File.ReadAllText(jsonFilePath);  // this show the content in string format. 

        dataObject = JsonUtility.FromJson<DataObject>(jsonString);
 
}

但是当我尝试获取 dataObject.values 显示 Null 时。 我想要访问每个元素。

c# unity-game-engine mesh voxel
1个回答
0
投票

JsonUtility
和 Unity 序列化器一般不支持复杂集合

⇒ 使用例如Newtonsoft Json.NET 代替。它不会直接显示在 PackageManager 中,但您可以按名称安装

com.unity.nuget.newtonsoft-json

然后使用

var json = "{\"values\": [[[1.0, 2.0, 3.0], [4.0, 5.0, 6.0], [7.0, 8.0, 9.0]], [[10.0, 11.0, 12.0], [13.0, 14.0, 15.0], [16.0, 17.0, 18.0]], [[19.0, 20.0, 21.0], [22.0, 23.0, 24.0], [25.0, 26.0, 27.0]]]}";
        
var data = JsonConvert.DeserializeObject<DataObject>(json);
Debug.Log(data[0][0][0]);
© www.soinside.com 2019 - 2024. All rights reserved.