配置Proto編譯環境
- 新建一個.Net Core應用,安裝 NuGet 程序包:Google.Protobuf.Tools
- 找到程序包路徑
- 該路徑下的tools文件夾中有各系統可用的protoc編譯文件
- 將相應系統的路徑添加到系統變量Path中,方便接下來的使用,這裏是
[C:\Users\LANQ\.nuget\packages\google.protobuf.tools\3.8.0\tools\windows_x64]
- 在命令行中進行測試[protoc --version]
- 編寫簡單的proto文件,儲存爲D:\DStudio\Proto\proto\Test.proto,詳細規則可見大佬的翻譯
黃海佳-Proto3 語言指南
syntax = "proto3";
message Test {
int32 id = 1;
string name = 2;
}
- 使用protoc進行編譯
基本的規則是:protoc -I=[proto文件路徑] –[目標語言]_out=**[目標路徑] [目標文件名]
protoc -I=proto --csharp_out=cs Test.proto
這裏的文件夾路徑如圖,編譯時名稱匹配即可
8. 新建一個Unity項目,將生成的cs文件拖入Unity項目中
因爲還沒導入Protocol的庫文件,所以會有一些報錯
導入Protocol庫文件
- 在Core程序中安裝 NuGet 程序包:Google.Protobuf
- 找到程序包路徑,在該路徑的lib文件夾下,有編譯好的庫文件,Unity(新版)可用的是net45的
- 將Google.Protobuf.dll拖入Unity中,這時候已經沒有報錯了
proto3常用API
- 將結構體序列化爲字符數組
Test test = new Test //Test的數據結構跟剛剛在proto文件中定義的一致
{
Id = 0,
Name = "LANQ"
};
byte[] datas;
using (MemoryStream stream = new MemoryStream())
{
test.WriteTo(stream);
datas = stream.ToArray();
}
或者
Test test = new Test
{
Id = 1,
Name = "LANQ"
};
byte[] datas = test.ToByteArray();
- 將字符數組反序列化爲結構體
Test test1 = Test.Parser.ParseFrom(datas);
Debug.Log(test1.ToString()); //串行化爲Json然後輸出
參考資料