Unity游戏存档
在Unity中游戏存档有如下四种方式:PlayerPrefs,C#序列化,Xml序列化,Json序列化
一般要解决几个问题:
1.游戏版本的升级
2.玩家有多个存档
3.玩家破坏存档的情况
PlayerPrefs
优点:上手简单,存储方便,不用考虑内部实现,适合做小游戏的数据存档。
缺点:只支持基本数据类型,无法存储一个类,数组,集合,字典等。
C#序列化
优点:
1.除了静态类型和抽象类型以及类必须标记为[Serializable]的,其他的都可以被序列化:类,数组,集合,字典,类及其子类等。
缺点:
1.不会调用要序列化类的构造函数。
2.在升级版本后,新增一个字段也只是采用系统默认值,而不是我在类中直接赋的值。
3.在升级版本后,如果删除了之前的一个字段,则无法正确解析(反序列化)。
Xml序列化
优点:
1.序列化出来的数据直观,可以序列化类和类中的对象。
2.升级版本后,如果新增了字段,则自动采用你在类中赋给该变量的值。
3.升级版本后,如果删除了之前的字段,则自动忽略之前的字段,而不会像c#序列化一样报错。
缺点:
1.不能序列化字典,二维数组以上的数据。
2.比Json更占空间,且引入的dll也更大。
Json序列化
优点:
1.简单轻量
2.可以满足你要序列化的几乎任何类型数据。
3.如果要升级版本,可以任意删除之前的字段而不会出现不能解析的情况;可以新增字段且采用你在类中直接赋的值。
缺点:
1.相对PlayerPrefs来说,引入了一个250kb左右的DLL文件。
Newtonsoft.Json :https://github.com/SaladLab/Json.Net.Unity3D
引用:https://blog.csdn.net/a237653639/article/details/50076755