1. 程式人生 > >【Unity】Protobuf的使用與常見問題

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

目錄 net 相同 Go TP targe bold 1.7 NPU

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的使用與常見問題