Unity学习小组Unity 工具集

Protobuf3 for Unity 简明教程

2016-08-24  本文已影响4827人  水瓶座阿斌

上次说道,有人在github上分享了可用于Unity的protobuf

GIT: protobuf3-for-unity

以下是楼主在Mac下进行的实践总结。


简明教程

本教程适合不想自己动手编译protobuf.dll的同学。

1. 参考protobuf的git说明文档,安装编译器。

https://github.com/google/protobuf/releases

我用的是

https://github.com/google/protobuf/releases/download/v3.0.0/protoc-3.0.0-osx-x86_64.zip

注:记得将protoc的路径添加到path里。

export PROTOC_PATH=<protobuf的路径>

export PROTOC=$PROTOC_PATH/bin/protoc

export PATH=$PROTOC_PATH/bin:/opt/local/bin:/opt/local/sbin:/usr/local/bin:$PATH

2. 下载protobuf3-for-unity的已经编译好的dll。

我是自己编译的,所以没有进行测试。理论上正常使用应该没有问题。

注意:我直接编译的版本有遇到过一个异常,如果你也遇到了 System.Reflection.Emit 的错误,可以参考后边我修复的版本。

下载地址:

https://github.com/bitcraftCoLtd/protobuf3-for-unity/releases

3. 将proto文件编译为.cs文件

命令示例:

protoc --csharp_out=. ./addressbook.proto

更详细的命令可以看文档,或者输入命令

protoc -help

4. 将protobuf.dll添加到Unity工程的Plugins目录

5. 编译测试

测试代码可以参考AddressBook的示例,或者参看具体文档。

https://github.com/bitcraftCoLtd/protobuf3-for-unity/tree/v3.0.0/src/AddressBook

6. 可能出现的问题

楼主测试的时候发现,将protobuf message转换为string,在iOS上有问题,因为protobuf的c#代码使用了动态生成代码的技术。

错误如下:

System.Reflection.Emit is not supported.

所以,需要避免使用这些方法,或者自己重新编译dll。

参考楼主的修改版本:

https://github.com/zhangzhibin/protobuf3-for-unity-ex

下载地址:

https://github.com/zhangzhibin/protobuf3-for-unity-ex/releases

使用有问题,欢迎留下出错日志。

上一篇下一篇

猜你喜欢

热点阅读