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

posted @ 2020-06-01 16:03  何文西  阅读(1569)  评论(0编辑  收藏  举报