Unity 2018 配置 Protobuf Buffers 詳細過程

配置Proto編譯環境

  1. 新建一個.Net Core應用,安裝 NuGet 程序包:Google.Protobuf.Tools
  2. 找到程序包路徑
  3. 該路徑下的tools文件夾中有各系統可用的protoc編譯文件
  4. 將相應系統的路徑添加到系統變量Path中,方便接下來的使用,這裏是
    [C:\Users\LANQ\.nuget\packages\google.protobuf.tools\3.8.0\tools\windows_x64]
  5. 在命令行中進行測試[protoc --version]
  6. 編寫簡單的proto文件,儲存爲D:\DStudio\Proto\proto\Test.proto,詳細規則可見大佬的翻譯
    黃海佳-Proto3 語言指南
syntax = "proto3";

message Test {
 int32 id = 1;
 string name = 2;
}
  1. 使用protoc進行編譯
    基本的規則是:protoc -I=[proto文件路徑] [目標語言]_out=**[目標路徑] [目標文件名]
protoc -I=proto --csharp_out=cs Test.proto

這裏的文件夾路徑如圖,編譯時名稱匹配即可

8. 新建一個Unity項目,將生成的cs文件拖入Unity項目中

因爲還沒導入Protocol的庫文件,所以會有一些報錯

導入Protocol庫文件

  1. 在Core程序中安裝 NuGet 程序包:Google.Protobuf
  2. 找到程序包路徑,在該路徑的lib文件夾下,有編譯好的庫文件,Unity(新版)可用的是net45的
  3. 將Google.Protobuf.dll拖入Unity中,這時候已經沒有報錯了
    image.png

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然後輸出

參考資料

  1. 黃海佳-Proto3 語言指南
  2. Protocol Buffers官方文檔
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章