Unity序列化与反序列化

序列化

把对象转换为字节序列的过程。

序列化可以让对象在网络上传输或者保存在本地文件时,保证对象的完整性和可传递性。序列化后的字节流保存了对象的状态以及相关的描述信息。序列化机制的核心作用就是对象状态的保存与重建

字段序列化的条件:

  1. 该字段定义为public,或者添加有 [SerializeField] 属性
  2. 该字段不能使用 static / const / readonly 关键字
  3. 字段的数据类型必须能序列化

可序列化的数据类型:

  • 带有[Serializable]属性的自定义非抽象类或自定义结构体
  • 继承自UntiyEngine.Object的对象引用
  • 基本数据类型(int,float,double,bool,string等)+ 枚举类型
  • 能序列化的字段数组、线性表

不能被序列化的:

  • 自定义的字典类型数据
  • 多态类,抽象类
  • 属性方法
    以上这些即使加了[SerializeField]属性也不会被序列化

如果不想public变量被序列化,使用[NonSerializable]

反序列化

指把字节序列恢复为对象的过程。

客户端从文件中或网络上获得序列化后的对象字节流后,根据字节流中所保存的对象状态及描述信息,通过反序列化重建对象。

为什么需要序列化与反序列化

  • 当两个进程进行远程通信时,可以相互发送各种类型的数据,包括文本、图片、音频、视频等, 而这些数据都会以二进制序列的形式在网络上传送,此时就需要序列化将这些数据转换为二进制序列,而在接受数据时,就需要反序列化将接受到的二进制序列恢复出原来的数据(如打包资源就是序列化过程,下载资源就是反序列化)。
  • 通过序列化,我们可以把数据以字节序列的形式永久地保存到本地文件或数据库中(数据的持久化)。同时,我们还可以利用序列化实现远程通信,即在网络上传送对象的字节序列。

参考文章:https://www.cnblogs.com/ASsss/p/10470664.html

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值