Unity Protobuf实践

打印 上一主题 下一主题

主题 1013|帖子 1013|积分 3039

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

x
官方文档:https://protobuf.com.cn/overview/
1. 获取Protobuf:

1.1 通过NuGet包管理器:
        

        

拷贝dll:
        

选择.net2.0的dll:
        

导入Unity Plugins目次:
        

1.2 下载源码并生成dll:
GitHub - protocolbuffers/protobuf: Protocol Buffers - Google's data interchange format
        

        

解压选择csharp:
        

VS打开项目:
        

        

生成解决方案:
        

获取dll:
        

        (.net2.0只包罗Protobuf.dll,其他dll得从.net45获取)
        

2. 利用protoc工具获取协议对应的.cs文件:

获取protoc,v3.29.3对应 protoc-29.3-win64.zip,版本对应官方文档有说明;
新建proto文件:
        

利用protoc获取cs:
        

        

3. 在Unity利用cs:

序列化与反序列化工具:
  1. public class ProtoTool
  2. {
  3.     /// <summary>
  4.     /// 序列化
  5.     /// </summary>
  6.     /// <param name="message"></param>
  7.     /// <returns></returns>
  8.     public static byte[] Serialize(IMessage message)
  9.     {
  10.         return message.ToByteArray();
  11.     }
  12.     /// <summary>
  13.     /// 反序列化
  14.     /// </summary>
  15.     /// <typeparam name="T"></typeparam>
  16.     /// <param name="packct"></param>
  17.     /// <returns></returns>
  18.     public static T DeSerialize<T>(byte[] packct) where T : IMessage, new()
  19.     {
  20.         IMessage message = new T();
  21.         try {
  22.             return (T)message.Descriptor.Parser.ParseFrom(packct);
  23.         }
  24.         catch (System.Exception e) {
  25.             throw e;
  26.         }
  27.     }
  28. }
复制代码
实例:
  1. UserInfo send = new UserInfo();
  2. send.Name = "Lin";
  3. send.Gold = 91000000000;
  4. byte[] buff = ProtoTool.Serialize(send);
  5. UserInfo recv = ProtoTool.DeSerialize<UserInfo>(buff);
  6. Debug.Log($"{recv.Name}, {recv.Diamonds}, {recv.Gold}, {recv.Level}");
复制代码
反序列化时,可从协议生成的类中获取Parser:

参考:在Unity中利用Protobuf进行序列化_unity c# proto buffer-CSDN博客

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

熊熊出没

论坛元老
这个人很懒什么都没写!
快速回复 返回顶部 返回列表