马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?立即注册
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:
序列化与反序列化工具:
- public class ProtoTool
- {
- /// <summary>
- /// 序列化
- /// </summary>
- /// <param name="message"></param>
- /// <returns></returns>
- public static byte[] Serialize(IMessage message)
- {
- return message.ToByteArray();
- }
- /// <summary>
- /// 反序列化
- /// </summary>
- /// <typeparam name="T"></typeparam>
- /// <param name="packct"></param>
- /// <returns></returns>
- public static T DeSerialize<T>(byte[] packct) where T : IMessage, new()
- {
- IMessage message = new T();
- try {
- return (T)message.Descriptor.Parser.ParseFrom(packct);
- }
- catch (System.Exception e) {
- throw e;
- }
- }
- }
复制代码 实例:
- UserInfo send = new UserInfo();
- send.Name = "Lin";
- send.Gold = 91000000000;
- byte[] buff = ProtoTool.Serialize(send);
- UserInfo recv = ProtoTool.DeSerialize<UserInfo>(buff);
- Debug.Log($"{recv.Name}, {recv.Diamonds}, {recv.Gold}, {recv.Level}");
复制代码 反序列化时,可从协议生成的类中获取Parser:
参考:在Unity中利用Protobuf进行序列化_unity c# proto buffer-CSDN博客
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。 |