如何使用protobuf-net生成.cs文件

如何使用protobuf-net生成.cs文件,第1张

如何使用protobuf-net生成.cs文件

然后把ProtoGen整个文件拷贝出来,放到我们的unity开发目录下

把FULL文件夹下的unity .net库拷贝皮罩到Asset文件夹下 plugin文件中(如果没有就新建一个)

此时我的目录结构是这样的

在ProtoGen里面新建个文件夹protos用于存放我们的proto文件

在跟州握老Asset同级目录下编写generator.bat脚本,这样子就可以自动帮你生成这些cs文件

[ruby] view plain copy

@echo off

set out_path=%cd%/Assets/册升Game/Script/protobuf (这一段可以自定义路径,用于存放生成的cs文件) ...

在网上查了一下,虽然有很多文章介绍Protocol Buffer,但是实际使用起来,还是会遇到很多问题,所以我想应该有一个指南一样的东西,让新手很快就能使用它。

Protocol Buffer简写为Protobuf,是Google开发的一种储存数据的方式,含败功能与XML一样,但更方便,数据量更小,速度更快,在序列化和反序铅埋列化的时候使用,有很大的优势。比如,网络游戏的通讯协议编写。更重要的是,它是一个开源项目。

由于Protobuf不能生成C#代码,所以就要用到另外一个开源项目protobuf-net,

用法是,在命令行用protoc.exe依据你自己定义的.proto文件,来生成.cpp文件

用protobuf-net的protogen.exe来生成.cs文件,可以写一个批处理,如下:

protoc -I=. --cpp_out=. Net.proto //在当前目录下,以cpp方式编译Net.proto

protogen -i:Net.proto -o:Net.cs//在当前目录下,用Net.proto生成Net.cs

其实两句功能是一样,只是分别生成了Net.proto的cpp文谈激颤件和cs文件,这样就可以在两种语言编写的应用程序间通信了。

protobufrepeated的数据类型和C++的Vector,list类似,只拆森能传输相同的数据类型。当然,如果你为了传输多种数据类型,可以使用类似与C++union的方式,用个大消息,消息的每个字段都使用optional标记,你在业务处理的时候,每次只对一个字段赋旅枣亩值同样可以达到目的岩缓。另外:repeated只能表示数据有还是没有,在没有的时候,究竟是保留原有的数据不动,还是删除所有数据,这点有歧义。需要使用另外的字段进行处理。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/tougao/12287968.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-24
下一篇 2023-05-24

发表评论

登录后才能评论

评论列表(0条)

保存