Protobuf的使用流程
protobuf参考教程:
手写.proto文件后,用CMD命令行运行protoc.exe编译器,进入.proto文件路径生成C#文件,再把C#文件放到Unity项目中使用。
插件protobuf-net:
原因是官方Protobuf的C#实现要求.Net4.6及以上,而Unity使用的.Net过低版本(老版本最高.Net3.5,具体要看是用的Unity的版本)。
在已写好的C#实体类中加上打标签。
插件protobuf-unity:
这是Unity编辑器插件。Protobuf正常使用流程是手写.proto文件后,用CMD命令行运行protoc.exe编译器,进入.proto文件路径生成C#文件,再把C#文件放到Unity项目中使用。该插件可自动寻找Unity项目中所有.proto文件并一键生成所有对应的C#文件(出现在与每个.proto文件相同的目录下)。并且当.proto文件被修改时会自动重新生成C#文件!
插件protobuf_for_unity
或
适用于unity3d 5.x。unity2017及以后版本请使用google官方版本。
常见问题
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编辑器即可。