码迷,mamicode.com
首页 > 编程语言 > 详细

【Unity】Protobuf的使用与常见问题

时间:2018-05-26 10:50:38      阅读:813      评论:0      收藏:0      [点我收藏+]

标签:报错   实体类   参考   cmd命令   出现   rap   www   低版本   edit   

Protobuf的使用流程

protobuf参考教程:https://www.jianshu.com/p/b135676dbe8d

手写.proto文件后,用CMD命令行运行protoc.exe编译器,进入.proto文件路径生成C#文件,再把C#文件放到Unity项目中使用。

该方法能够生成C#文件,但不推荐。该方法始于.proto文件,对于已写好的C#实体类,还需对照着写一份.proto文件,再重新生成C#文件才能用。

 

或者使用protobuf-net:http://www.cnblogs.com/xuf22/articles/3504399.html

原因是官方Protobuf的C#实现要求.Net4.6及以上,而Unity使用的.Net过低版本(老版本最高.Net3.5,具体要看是用的Unity的版本)。

在已写好的C#实体类中加上打标签。

 

或者使用protobuf-unity:https://github.com/5argon/protobuf-unity

这是Unity编辑器插件。Protobuf正常使用流程是手写.proto文件后,用CMD命令行运行protoc.exe编译器,进入.proto文件路径生成C#文件,再把C#文件放到Unity项目中使用。该插件可自动寻找Unity项目中所有.proto文件并一键生成所有对应的C#文件(出现在与每个.proto文件相同的目录下)。并且当.proto文件被修改时会自动重新生成C#文件!


常见问题

Missing input file

命令行使用protoc.exe时,报错Missing input file。即当前设置的--proto_path目录下找不到.proto文件。如下图,protoc.exe与person.proto文件在同一目录下的。

 技术分享图片

原因是格式错误,文件路径=./后面要加上一个空格!!!!!!!!!
 

Unity不支持.Net3.5及以上

如果编译Google.Protobuf.dll时选择的.Net版本过高,把该dll导入Unity项目中能看到dll无法正常工作,如下图。且.proto文件生成的C#文件中会报错。
技术分享图片
技术分享图片
此时可以在Visual Studio中修改.Net版本再重新编译dll。修改方法如图。
技术分享图片
技术分享图片
或者在Unity中修改.Net版本(需要较新的Unity版本)。在Edit - Project Settings - Player中,改用.Net4.6,之后重启Unity编辑器即可。
技术分享图片

【Unity】Protobuf的使用与常见问题

标签:报错   实体类   参考   cmd命令   出现   rap   www   低版本   edit   

原文地址:https://www.cnblogs.com/guxin/p/9091392.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!