首页 > 解决方案 > 在课程 Unity 游戏中将数据保存到 json?

问题描述

循环遍历所有活动游戏对象并每十秒保存一次实例数据的适当方法是什么?

理想情况下,我想创建一个包含所有游戏对象数据的单一 JSON 文件,类似于以下内容:

            {
                "Instance ID" : " xxxxxx"
                "Time" : 10
                "Attributes" : [
                    { "Position" : "(xx,xx) },
                    { "Speed" : "xxx" },
                    { "Color" : "xxx" },
                ]
                "Instance ID" : " xxxxxx"
                "Time" : 20
                "Attributes" : [
                    { "Position" : "(xx,xx) },
                    { "Speed" : "xxx" },
                    { "Color" : "xxx" },
                ]
                ...
            }

目前我可以每 10 秒保存一个单一的游戏对象的数据。但是,包含辅助游戏对象只会覆盖原始 JSON 文件。

标签: c#unity3djson.net

解决方案


此链接涵盖 JsonUtility,即统一文档中的 JSON 序列化。

这是您的示例 json 的粗略轮廓:

[Serializable]
public class CustomObject
{
    public int instanceID;
    public float time;
    public Vector2 position;
    public float speed;
    public string color;
}
CustomObject myObject = new CustomObject();
myObject.instanceID = 1;
myObject.time = 10.0;
myObject.position = new Vector2(0.0f, 0.0f);
myObject.speed = 23;
myObject.color = 'red';

string jsonObject = JsonUtility.ToJson(myObject);

然后当您想再次将其放入对象中时:

anotherObject = JsonUtility.FromJson<CustomObject>(jsonObject);

我没有测试过它,我不知道它是否有效,但它应该足以为你指明正确的方向。


推荐阅读