赞
踩
①、下载官方protobuf,地址: https://github.com/protocolbuffers/protobuf/releases
②、用vs打开:protobuf-22.2/csharp/src/Google.Protobuf.sln
③、vs 打开后,因为我们只需要 net45,所以删除 Google.Protobuf.sln 中的 net50,如下图:
④、vs 设置为 Release 模式,然后右键选中 Google.Protobuf --> 生成,即可生成需要的 dll 文件,生成的文件位于 protobuf-22.2/csharp/src/Google.Protobuf/bin/Release/net45 目录下,如下图:
⑤、将net45中所有文件导入Unity的Plugins文件夹中,如下图:
①、编写.proto文件:新建txt文本,重命名为Test.proto,文件内容为:
- syntax = "proto3";
-
- package msg;
- option java_package = "game.msg";
-
-
- // 消息结果。
- message MessageResult {
- // 结果码。
- int32 code = 1;
- // 消息内容。
- string msg = 2;
- }
②、下载官方protoc,地址: https://github.com/protocolbuffers/protobuf/releases/tag/v22.2
③、输入命令编译.proto,为了方便,编写一个.bat文件,新建txt文本,重命名为compile_CS.bat,文件内容为:
- chcp 65001
-
- REM 编译.proto文件,转换为C#,输出到当前目录下
- @echo compile proto to C#
-
- @call protoc.exe --csharp_out ./ Test.proto
④、编译:
将Test.proto文件、compile_CS.bat文件,放入protoc.exe所在文件夹中,双击compile_CS.bat,即可生成Test.cs文件,如下图:
①、将Test.cs导入Unity中;
②、编写代码:
- using Google.Protobuf;
- using Msg;
- using UnityEngine;
-
- public class NewTest : MonoBehaviour
- {
- void Start()
- {
- MessageResult messageResult = new MessageResult();
- messageResult.Code = 99;
- messageResult.Msg = "成功";
-
- // proto消息对象,转换成字节数组
- byte[] dataBytes = messageResult.ToByteArray();
-
- // proto消息字节数组,转换成对象
- // 第一种方式:实例调用
- // IMessage message = new MessageResult();
- // MessageResult newMessageResult = (MessageResult)message.Descriptor.Parser.ParseFrom(dataBytes);
- // 第二种方式:静态直接调用
- MessageResult newMessageResult = (MessageResult)MessageResult.Descriptor.Parser.ParseFrom(dataBytes);
-
- Debug.Log(newMessageResult.Code); // 99
- Debug.Log(newMessageResult.Msg); // "成功"
- }
- }
至此,Unity中使用protobuf流程结束!
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。