然后把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只能表示数据有还是没有,在没有的时候,究竟是保留原有的数据不动,还是删除所有数据,这点有歧义。需要使用另外的字段进行处理。欢迎分享,转载请注明来源:内存溢出
评论列表(0条)