【Unity】Protobuf的使用與常見問題


Protobuf的使用流程

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

手寫.proto文件后,用CMD命令行運行protoc.exe編譯器,進入.proto文件路徑生成C#文件,再把C#文件放到Unity項目中使用。

 

插件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#文件!

 

插件protobuf_for_unity

https://github.com/GongFaxin/protobuf_for_unityhttps://github.com/bitcraftCoLtd/protobuf3-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編輯器即可。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM