unity使用Google Protobuf

本文详细介绍了如何在Unity中使用Google的protobuf工具进行序列化和反序列化操作,包括在Visual Studio中设置环境、生成C#脚本、解决Unity中的依赖问题以及在Unity项目中实际应用的方法。

看到网上说Google的这个序列化工具能自动生成脚本(java、c#、c++。。。。。。)感觉很厉害的样子,于是就学学怎么在unity里用,正好结合之前写的socket通信,做一个demo。我看网上protobuf的教程很乱啊,最开始想找一篇跟着做下来完事了,结果坑也是不少。。。。。。
1.打开vs新建一个c#控制台工程
2.管理解决方案的nuget包
在这里插入图片描述
3.搜索Google protobuf
在这里插入图片描述
4.安装上图的两个
5.安装成功后,右键解决方案,在文件资源管理器中打开文件夹(就是找到工程的位置)
6.在工程的package文件夹下可以看到我们安装好的protobuf
在这里插入图片描述
7.来到tools文件夹下的Windowsx64文件夹下(根据自己系统选择)
在这里插入图片描述
8.一开始这个文件夹是只有protoc.exe(我也不知道干啥用的),另外两个是我自己建的,其中,info.proto就是自己新建一个txt然后根据Googleprotobuf的语法写好要序列化的消息,最后重命名为.proto文件我是这么写的。具体的语法大家自己查吧,我也就懂一点,就不误人子弟了。

syntax = "proto3";



message Info
{
	int32 id=1;
	InfoType type=2;
	V3 pos=3;
	V3 rot=4;
}

message V3
{
  float	x=1;
  float	y=2;
  float z=3;
}


enum InfoType
    {
        Move = 0;
        LClick = 1;
        RClick = 2;

9.生成c#.bat是一个批处理文件,用于把.proto文件转换成c#文件,这中间的过程我也不太清楚经历了什么。同样新建一个txt文本,粘接一下下面的代码,然后把txt后缀改成bat就行了(生成java、c++的批处理文件大家自己找吧,这个我也是网上粘的)。

@echo off
for %%i in (*.proto) do (
    protoc --csharp_out=./ %%i
    rem 从这里往下都是注释,可忽略
    echo From %%i To %%~ni.cs Successfully!  
)
pause

10.双击执行这个批处理文件,生成c#脚本
在这里插入图片描述
11.补充一点,这个文件夹下有工具的一些proto文件,在生成c#脚本时如果提示缺少那个,你就把那个复制一份到你自己新建的proto文件的同级目录下。
在这里插入图片描述
12.将生成的c#脚本拖到unity工程里,有报错,先不慌,来到下面这个目录下,根据你的.net版本选择合适的Google.Protobuf.dll,也放到unity工程里。
在这里插入图片描述
13.如果你跟我一样也是选的net45文件夹的dll,你需要把unity的.net版本调高,然后重启unity。
在这里插入图片描述
15.这时候可能还有报错,打开任意一个unity的c#脚本然后做2 、3步,不过这里只需要安装Google.protobuf就够了。至此,protobuf已经可以使用了。具体用法就和普通类是很类似的。

序列化和反序列化都封装起来的,我们直接赋值取值就行了
序列化

 public void AddData(Vector3 pos,Vector3 rot)
    {
       Info mInfo = new Info
        {
            Id = hit.transform.GetComponent<NetID>().ID,
            Type = InfoType.Move,
            Pos = new V3 { X = pos.x, Y = pos.y, Z = pos.z },
            Rot = new V3 { X = rot.x, Y = rot.y, Z = rot.z }
        };
        //socket客户端发送
        mClient.SocketSend(mInfo.ToByteArray());
    }

反序列化

 Info info = new Info();
            info = Info.Parser.ParseFrom(mClient.mReceiveBytes);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

带酒书生

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

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

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

打赏作者

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

抵扣说明:

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

余额充值