序列化是什么?有什么用?里面怎么实现

序列化是什么?有什么用?里面怎么实现

序列化是什么?

序列化就是将对象的状态信息转换为可以存储或传输形式的过程。其实就是将对象持久化,比如说把对象保存为二进制或者是XML的方式。可以将对象序列到流、磁盘、内存和网络等等。相反,反序列化则是将存储或传输形式转换为对象的过程。

有什么用?

(1)以某种存储形式(二进制或者是XML等)使对象持久化。序列化和反序列化用来保存内存中的数据unity 序列化什么意思,它不是C#中独有的技术,比如win7的休眠就是该技术的应用,在C#程序中可以用来保存对象,和对象当前状态,下次打开时通过反序列化获得人物立绘,一般用在服务器启动(反序列化)和关闭(序列化)时保存数据。

(2)使对象的传递更加容易,比如你用ajax向服务器请求信息,服务器可以直接将model对象通过序列化来输出json字符串,也可以通过反序列化将你传过去的json字符串组装成对象,就免去了拼字符串和解析字符串的过程

在.Net里面怎么实现序列化技术

(1)二进制序列化保持类型保真度unity 序列化什么意思数据报告,这对于在应用程序的不同调用之间保留对象的状态很有用。

(2) XML 序列化仅序列化公共属性和字段,且不保持类型保真度。当您要提供或使用数据而不限制使用该数据的应用程序时,这一点是很有用的。

Unity中的Assets序列化实践

要序列化的类继承ScriptableObject基类。

Unity对此基类的描述:

Mark a ScriptableObject-derived type to be automatically listed in the Assets/Create submenu,so that instances of the type can be easily created and stored in the project as “.asset” files.

[CreateAssetMenu(fileName = "TestAssets",menuName ="CreateAssets",order = 0)]
public class AssetsSerialize : ScriptableObject {
    public int number;
    public string name;
    public List<int> numbers = new List<int>();
}

这里添加一个特性CreateAssetMenu,添加此特性将在Assets/Create子目录中出现menuName,点击后创建一个对象名称为TestAssets。

这里创建了一个TestAssets的序列化资源

序列化不会序列化字典所以我们需要字典的时候用List、struct代替

文章来源:https://blog.csdn.net/game_builder/article/details/100737783