跨平台使用Protobuf-net-创新互联
Protobuf现在已经越来越多在移动端游戏中使用,其序列化和反序列化非常方便开发者使用,如果使用Unity开发,我们该如何使用?在这里给大家总结一下:
创新互联是一家专业提供剑河企业网站建设,专注与成都网站建设、网站建设、html5、小程序制作等业务。10年已为剑河众多企业、政府机构等服务。创新互联专业网站制作公司优惠进行中。第一步:把其中“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里面使用即可。
另外有需要云服务器可以了解下创新互联scvps.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。
分享文章:跨平台使用Protobuf-net-创新互联
标题来源:http://ybzwz.com/article/doegho.html