美文网首页Unity学习小组Unity 工具集
Protobuf3 for Unity 简明教程

Protobuf3 for Unity 简明教程

作者: 水瓶座阿斌 | 来源:发表于2016-08-24 22:00 被阅读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

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

    相关文章

      网友评论

      • f_f_:跟这个 https://github.com/GongFaxin/protobuf_for_unity 区别是什么呢?除了版本不一样?
      • c442fb92457e:HI,我看到bitcraftCoLtd/protobuf3-for-unity中在4个月前有一次更新,移除了JIT,我想请问一下是否与你做的修改相同呢。另外你修改的这个pb3运行时库是否经历了考验呢?(上线项目验证)我很想尝试在unity上使用pb3
        水瓶座阿斌:@疯狂的瀚匪 pb3只是一个技术调研,没有实际项目验证过哈

      本文标题:Protobuf3 for Unity 简明教程

      本文链接:https://www.haomeiwen.com/subject/wywnsttx.html