【Unity】Protobuf的使用與常見問題
阿新 • • 發佈:2018-05-26
目錄 net 相同 Go TP targe bold 1.7 NPU
或者在Unity中修改.Net版本(需要較新的Unity版本)。在Edit - Project Settings - Player中,改用.Net4.6,之後重啟Unity編輯器即可。
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】Protobuf的使用與常見問題