跨平台使用Protobuf-net
Protobuf现在已经越来越多在移动端游戏中使用,其序列化和反序列化非常方便开发者使用,如果使用Unity开发,我们该如何使用?在这里给大家总结一下:
第一步:把其中“protobuf-net”文件夹 拷贝到unity 即可。
下载地址:https://github.com/mgravell/protobuf-net
我会在后面提供给大家下载。
第二步:建立一个新的文件smcs.rsp,内容是-unsafe,注意不是下划线。
第三步:如果Unity还报错,需要我们把工程设置成.Net 2.0 subset。
通过以上设置我们的程序就可以同时在android和ios上运行。
另一种解决方式:可以不用unsafe,在PlayerSettings里的Srcripting Define Symbols里加上宏FEAT_SAFE也可以在Xcode里编译通过。
如果改成.Net 2.0还报错,可以在增加gmcs.rsp内容跟上面的一样-unsafe。
我们在程序中如何使用Protobuf,下面我们举例说明:
比如我们需要在服务器和客户端之间传输消息,我们可以这样定义:
枚举结构:
enum enumLoginGameResult
{
LoginGame_Success = 0;
LoginGame_error = 1;
}
消息结构定义
message LoginGame
{
required uint32 uaid = 1; //账号ID
optional enumCharType type = 2;
};
消息结构体,required意思是必须要定义的,optional是可以选择的,就是说我们在使用这个消息的时候,optional可以忽略的。还有一个是repeated 这个是list表,是数组。
消息之间可以通过import"文件名"调用对应文件的函数。
比如我在 common.proto 文件里面定义了一个枚举值或者消息都可以,
我需要在login.proto,里面调用就需要在login.proto 最前面写上 import“common.proto”,然后就可以使用common.proto里面的消息或者是枚举值了。
这样定义的好处是C++或者C#都可以共同使用。
那如何使用,我们可以通过定义批处理进行,比如生成.CC和.h。批处理写法如下:
@echo off
set tool=..\Tools
rem===============
rem Support
set proto=.\common\common.proto
%tool%\protoc.exe--proto_path=.\common --cpp_out=.\common %proto%
pause
生成C#文件的批处理如下:
@echo off
set tool=..\3Party\protobuf-net\net
rem ===============================================
rem Support
set proto=login.proto
%tool%\protogen.exe -i:%proto% -o:%proto%.cs -q
pause
以上就是关于Protobuf的使用,我已将其源代码上传到51CTO下载中心,如有需要大家可以去下载,直接将其放到Unity里面使用即可。
本文出自 “海游移动” 博客,请务必保留此出处http://jxwgame.blog.51cto.com/943299/1596354
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。