Unity数据持久化-序列化反序列化

序列化:把对象转化为可传输的字节序列过程称为序列化。通俗说就是将一个对象的状态(各个属性量)保存起来,然后在适当的时候再获得。
在这里插入图片描述

反序列化:把字节序列还原为对象的过程称为反序列化。

序列化目的:以某种存储形式使自定义对象持久化,将对象从一个地方传递到另一个地方,为了对象可以跨平台存储,和进行网络传输(凡是需要进行“跨平台存储”和”网络传输”的数据,都需要进行序列化)

常见的序列化方式有:JDK(不支持跨语言)、JSON、XML、Hessian、Kryo(不支持跨语言)、Thrift、Protostuff、FST(不支持跨语言)

C#对于文件的操作:
一个 文件 是一个存储在磁盘中带有指定名称和目录路径的数据集合。当打开文件进行读写时,它变成一个 流。
有两个主要的流:输入流 和 输出流。输入流用于从文件读取数据(读操作),输出流用于向文件写入数据(写操作)
在这里插入图片描述

使用方法:
一般使用流程:创建一个二进制格式化对象,新建文件流(指定路径,要写进哪里),序列化对象,关闭文件流
创建一个可序列化的类:添加特性
在这里插入图片描述

赋值:
在这里插入图片描述

序列化:(此处放在桌面,方便观察文件是否创建,建议使用Appication.persistentDataPath)
Appication.persistentDataPath:
【Window】%userprofile%\AppData\Local\Packages<productname>\LocalState
【IOS】/var/mobile/Containers/Data/Application//Documents
【Andriod】/storage/emulated/0/Android/data//files旧设备会在SD卡中
在这里插入图片描述

运行,打开文件
在这里插入图片描述

尝试加载:
在这里插入图片描述

总结:核心方法
【保存】用二进制格式化的序列化方法来序列化Save对象
BinaryFormatter.Serialize(FileStream _fileStream, Object _object)
【读取】二进制格式化程序的反序列化方法,将文件流转换为一个save对象
Save save = (Save)BinaryFormatter.Deserialize(FileStream _fileStream);

猜你喜欢

转载自blog.csdn.net/euphorias/article/details/108400943