c# - 在课程 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 文件。
解决方案
此链接涵盖 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);
我没有测试过它,我不知道它是否有效,但它应该足以为你指明正确的方向。
推荐阅读
- excel - 从多个工作簿导入多个命名工作表
- r - 是否可以将模型拟合到向量结果?
- python - 卷积神经网络:权重和偏差初始化
- python - matplotlib plt.show() 预索引空 numpy 数组时出现视觉故障
- docker - 不依赖于特定 URL 的 Docker-compose swagger-ui 设置
- c++ - 在 C++ 中使用选择排序对链表进行排序
- javascript - XSS Ajax,辅助表单未正确发布
- mail-server - Nodemailer 连接到本地 docker-mailserver
- clojure - 从 3 个集合中获取每个值组合的最有效方法是什么?
- ios - 如何从 collectionView 中的单元格中仅重新加载一项?斯威夫特 4