【发布时间】:2020-04-05 17:18:32
【问题描述】:
我是 Unity3d 和 C# 的新手。我想将一些数据存储在 JSON 文件中,以便它们在文本编辑器中易于编辑。
到目前为止,我使用的是 JsonUtility,因为它是在 Unity 中构建的,而且效果很好。使用起来很简单:
string json = JsonUtility.ToJson(foo);
Foo foo = JsonUtility.FromJson<Foo>(json);
对我来说很棒。
但是现在,我添加了一些词典。它们稍后被转换为更高效的数据结构,但我想将它们序列化为 JSON 作为命名对象。
这是我的代码示例。在我的例子中,对象结构是设置和已知的。单字典保留一种类型的对象,而字典在可序列化对象的层次结构中设置得更深。
[System.Serializable]
public struct Bar{
public int x;
public int y;
}
[System.Serializable]
public class Foo{
public int otherData = 43;
public Dictionary<string,Bar> bar = new Dictionary<string,Bar>(){
{"spaceship", new Bar{x = 7, y = 11}},
{"pirates", new Bar{x = 5, y = -3}},
};
}
我想要达到的目标:
{
"otherData": 43,
"bar": {
"spaceship": {"x": 7, "y": 11},
"pirates": {"x": 5, "y": -3}
}
}
有什么办法可以做到吗?
也许是我可以为 Dictionary 编写序列化/反序列化方法的一种方式?
【问题讨论】:
标签: c# json dictionary unity3d