手把手教你如何在Unity中使用Google.Protobuf3(二) .proto数据文件转.cs脚本

本文手把手教你如何在Unity中使用Google.Protobuf3,详细介绍了从.proto文件到.cs脚本的转换过程,包括protoc.exe下载、proto文件编写、bat脚本创建及执行,帮助开发者实现数据协议的快速编译。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.proto文件转cs简单介绍

proto文件也就是Protobuf的协议文件

我们可以通过Google.Protobuf官方提供的Protoc.exe进行编译

编译教程下面会详细介绍

一步一步教大家如何编译协议文件

并且制作一个一件编译脚本

以后编译数据协议只需执行 .bat文件即可

根据自己的电脑系统版进行选择32还是64。

演示系统版本:window10 64

这里先了解以下Proto文件的数据类型,以便我们更容易的编写proto文件
在这里插入图片描述
在这里插入图片描述

2.protoc.exe下载

首先我们打开protobuf github:[https://github.com/protocolbuffers/protobuf]
protoc.exe下载教程如下:
在这里插入图片描述

把.proto文件转为.cs脚本我们需要通过Google.Protobuf官方的 protoc.exe 进行转换。

下面是 protoc.exe 的下载地址:https://github.com/protocolbuffers/protobuf/releases

下载完成我们解压出来 我这里就放到了 D:\GitProject\protoc 文件夹中
如下图:
在这里插入图片描述
在这里插入图片描述

我们要使用的是bin文件夹中的protoc.exe

下面我们一起来学习一下如何把proto文件转为cs脚本

3.编写proto文件

首先我们需要编写一个.proto文件

bin文件夹下创建一个UserinfoProto.txt文本

输入以下内容保存之后把UserinfoProto.txt改名为UserinfoProto.proto
在这里插入图片描述

syntax ="proto3";
package TestGoogleBuffer;

message userInfo
{
	string	name=1;
	int64 gold=2;
	int64 diamonds=3;
	int32 level=4;
}

协议介绍:

1.syntax ="proto3" 指定了你正在使用proto3语法:如果你没有指定这个,编译器会使用proto2
2.package TestGoogleBuffer" 指定了该协议转成.cs文件后的命名空间

4.编写bat一键转换脚本

接着我们还在bin文件夹下创建一个 ExportProto.txt 文件

输入以下内容后把ExportProto.txt 改为 ExportProto.bat
在这里插入图片描述

D:

cd D:\GitProject\protoc\bin

protoc.exe --proto_path ./ UserinfoProto.proto --csharp_out=./

echo Exprot Successsed!

pause

前两行改为自己protoc.exe存放的盘和路径

  • –proto_path 表示proto文件的路径

  • –csharp_out 表示cs文件输入的路径

  • ./ 代表当前所在的目录

  • pause 表示暂停

最终文件列表如下:
在这里插入图片描述

5.执行bat一键生成cs

在这里插入图片描述

双击ExportProto.bat生成cs文件。

大功告成,我们的proto协议就生成出来了。

接着我们就把该cs文件放到Untiy中进行使用了。

觉得本篇文章可以的话,记得动动小手点下关注哦,更多干货知识你来拿!

下一篇:Google.Protobuf3(三) 序列化与反序列化

下一篇:Google.Protobuf3(三) 序列化与反序列化

Unity中处理GoogleProtocol Buffers (protobuf) 时,你可能需要将 `google.protobuf.Any` 类型的对象换为具体的消息类型。`google.protobuf.Any` 是一个通用的容器,可以封装任意类型的消息,这在多语言环境中非常有用,可以实现不同系统间的消息传递。在Unity使用时,首先需要确保你的项目中已经集成了protobuf的相关库,比如通过NuGet包管理器安装。 要将 `google.protobuf.Any` 对象换为具体的消息类型,你可以使用protobuf提供的API进行解包操作。下面是一个基本的换流程: 1. 确保你的Unity项目已经包含了protobuf的运行时库。 2. 使用 `google.protobuf.Any` 对象的 `Unpack` 方法,将任意消息类型换为具体的protobuf消息类实例。 示例代码如下: ```csharp using Google.Protobuf; using Google.Protobuf.Collections; using Google.Protobuf.WellKnownTypes; // 假设你已经有了一个Any类型的对象 Any anyObject = ...; // 定义一个消息类型,比如"MyMessage" MyMessage myMessage = new MyMessage(); // 检查Any对象是否可以换为"MyMessage"类型 if(anyObject.Is(MyMessage.Descriptor)) { // 执行解包操作 anyObject.Unpack(myMessage); // 现在你可以使用myMessage对象了 } else { // 处理错误情况,比如类型不匹配 } ``` 在上面的代码中,你需要根据实际情况替换 `MyMessage` 为你具体的消息类型。另外,你可能需要处理错误情况,例如当提供的 `Any` 对象类型与期望的消息类型不匹配时。
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

铸梦xy

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值