UnityJsonUtility存档
1.什么是JsonUtility
使用 JsonUtility 类可在 Unity 对象与 JSON 格式之间来回转换。例如,可以使用 JSON 序列化与 Web 服务进行交互,或者轻松地将数据压缩和解压缩为基于文本的格式。
JsonUtility是Unity5.0之后加入的功能,在此之前,我们想要将对象序列化时,需要添加Newtonsoft.Json等第三方工具。
2.JsonUtility的使用场景
游戏存档,存储游戏设置。
3.JsonUtility如何使用
3.1 建立一个可序列化的类来存储我们的数据
[Serializable] //普通类想要能够被序列化,需要添加这个标识
public class GameSaveData
{
[SerializeField]private float Score;
[SerializeField]private string Name;
}
3.2 JsonUtility存储数据
·JsonUtility.ToJson("需要转换成json的对象"); 将传入的对象转换成json文本
该对象必须支持序列化,对象是否支持详细请看第4点
·File.WriteAllText("文件存储的路径","json文本");
在对应的路径创建文件,将json文本存储到对应的文件中
关于untiy可获取的路径请参考
3.3 JsonUtility读取数据
·JsonUtility.FormJson
·File.ReadAllText("文件路径");将路径对应的文件以文本的格式读取出来并返回
3.4 JsonUtility删除数据
·File.Delete("文件路径");删除对应路径的文件
3.5 将多个对象存储进单个json文件中
Unity:JsonUtility序列化List链表数据(将多个对象存储到单个json文件中) – アイフェルの個人ニブログ (aiferu.xyz)
4.JsonUtility使用时的注意事项
4.1 JsonUtility.ToJson();中,传入的参数必须是可序列化参数
4.1.1 JsonUtility 可序列化的参数
以及添加了Serializable标记的普通类:需要using System;
[Serializable]
public class GameSaveData
{
[SerializeField]private float Score;
[SerializeField]private string Name;
}
4.1.2 JsonUtility不支持序列化的参数
以上图片来自[Unity] 存档系统 Part 2 | JSON | Unity初学者系列教程 | 数据存取 | 数据持久化 | 存档读档 | Save&Load_哔哩哔哩_bilibili,感谢。
5.参考
[Unity] 存档系统 Part 2 | JSON | Unity初学者系列教程 | 数据存取 | 数据持久化 | 存档读档 | Save&Load_哔哩哔哩_bilibili