Unity使用的四种存档读档方法区别

本文章只讲述四种存读方法的区别,具体实现不在范围内

  1. PlayerPrefs:
    该方法是Unity引擎提供的存读方法,常用方法如下:

在这里插入图片描述
储存位置:

  1. 打开注册表: 在键盘上点击 Window + R,在弹出的框中输入 regedit ,点击回车;
  2. 按照图中路径找到目标文件
    在这里插入图片描述
  3. 如果在Unity编译器中运行则打开 UnityEditor 文件夹,在该文件夹下找到目标项目名称,点击即可。

优点:上手简单,存储方便,不需要考虑内部实现
缺点:只支持存储基本数据类型(float 、int 、string),如果存储一个类、数组、集合、字典等,需要自己书写框架来自动赋值,比较麻烦。

  1. C#序列化
    序列化:新建或者打开一个二进制文件,通过二进制格式器将对象写入该二进制文件;
    反序列化:打开待反序列化的二进制文件,通过二进制格式器将文件解析成对象。
    优点:除了静态类型和抽象类型以及类必须标记为[Serializable]的操作之外,都可以直接序列化
    缺点:1. 不会调用序列化类的构造方法 2. 当升级版本时,类中新增一个字段只是采用系统默认值,而不是类中直接赋的值 3. 在升级版本时,类中删除了一个字段,则无法正确反序列化 4. 存储的文件可读性差

  2. XML
    序列化和反序列化与二进制方法十分类似
    优点:1. 文件可读性强 2. 升级版本后,如果增加了字段,则自动采用类中赋给该变量的值 3. 升级版本后,如果删除了字段,则自动忽略之前的字段,不会出现报错
    缺点:1. 冗余信息多 2. 不可以序列化字典,二维数组以上的数据

  3. Json
    Json序列化:对象序列为Json
    Json反序列化:Json反序列为对象
    优点:1. 使用简单 2. 可以满足几乎所有的数据类型(除了float需要用double来储存) 3. 如果更新版本,新增删除字段,跟XML处理结果一样。
    缺点:1. 数据格式不直观,可读性比XML差 2. 不能序列化 float 类型 3. 不支持更改字段名,如果更改,则会删除之前的并新增一个新的。

猜你喜欢

转载自blog.csdn.net/weixin_44081533/article/details/115351920