Unity使用protobuf-net进行二进制序列化与反序列化
2016-06-21 21:50
716 查看
Protobuf-net提供的一种易于使用的数据序列化方案,可序列化带有[ProtoContract]特性的类实例,并可支持Unity各个发布平台,且效率高、易用性强。
以下为需要进行序列化的类定义示例。
public static class Serialization { public static byte[] Serialize<T>(T instance) { byte[] bytes; using (var ms = new MemoryStream()) { Serializer.Serialize(ms, instance); bytes = new byte[ms.Position]; var fullBytes = ms.GetBuffer(); Array.Copy(fullBytes, bytes, bytes.Length); } return bytes; } public static T Deserialize<T>(object obj) { byte[] bytes = (byte[]) obj; using (var ms = new MemoryStream(bytes)) { return Serializer.Deserialize<T>(ms); } } }
以下为需要进行序列化的类定义示例。
[ProtoContract] public class Example { // Protobuf 要求 // 不带 [ProtoMember] C#特性的成员其值将不被序列化 // IsRequired 是可选的 // 如成员是自定义类对象,即该类是嵌套类,序号必须与类成员对象中的第一个成员序号相同 // 若将所有自定义类成员在该类中展开,不能存在相同的序号 public int ClassName { get; set; } [ProtoMember(1, IsRequired = true)] public Dictionary<int, int> Dictionary { get; set; } // 必须带有无参数默认构造函数 public Example() { Dictionary = new Dictionary<int, int>(); } }
相关文章推荐
- Unity客户端设计系列
- Unity3d 5.x 学习笔记(3)—— 发射预制体子弹(Instantiate),点射,扫射,五连发效果
- unity,将camera设为don't clear在android上会显示不正常
- [Unity 5.2] The imported type `UnityEngine.Advertisements.ShowResult' is defined multiple times
- Unity3d 5.x 学习笔记(2)—— 键盘控制物体移动与转向 (move and rotate)
- Unity-Unity3D与IOS交互开发
- unity3d 平滑看向的脚本
- Unity-读取本地txt
- Unity十一个小技巧
- unity脚本矩阵和shader内置矩阵区别联系 思考和梳理
- 【转】Unity中,使用Ngui 的默认字体Arial,显示出错;附带字体替换脚本
- 【Unity Shaders】学习笔记——SurfaceShader(四)用纹理改善漫反射
- Unity3d的热更新和资源下载
- Unity任意方向拉伸物体
- Unity中OnTrigger和OnCollision的触发条件
- Singleton : Implementation in Unity3d C#
- 移植UE4的模型操作到Unity中
- Unity-Animator深入系列---Foot IK
- unity视图切换快捷键
- mono develop-unity 编译脚本失败