protobuf-net 是一個基於契約的 .NET 程式碼序列化器,使用 Google 設計的 "protocol buffers" 序列化格式寫入資料。其 API 遵循典型的 .NET 模式(與 XmlSerializer、DataContractSerializer 等廣泛可比)。它適用於大多數撰寫標準型別並可以使用特性的 .NET 語言。
該庫主要服務於 https://github.com/GameFrameX/GameFrameX 專案作為子庫使用。
本套件提供了 ProtobufMessageSerializer,它是 com.gameframex.unity.network 中 IMessageSerializer 介面的實作。在 Unity 執行階段載入時,會透過 MessageSerializerRegistry.RegisterGlobal() 自動註冊為全域預設序列化器,無需修改任何程式碼即可實現向下相容。
- 基於契約 - 使用 .NET 特性進行序列化契約定義
- 高效能 - 高效的二進位序列化格式
- 跨平台 - 適用於所有 .NET 平台
- .NET 模式 - 遵循典型的 .NET 序列化模式
- Unity Package 支援 - 新增了 Unity Package Manager 支援
- IMessageSerializer 整合 - 實作了
IMessageSerializer介面,支援網路套件的可插拔序列化 - 自動註冊 - 載入時自動註冊為全域預設序列化器(零配置向下相容)
注意: 本套件依賴於
com.gameframex.unity.network(>= 2.5.1),該套件提供了IMessageSerializer介面。Unity Package Manager 會自動解析此依賴。
- 在 Unity 編輯器中開啟 Package Manager
- 點擊 "+" 按鈕選擇 "Add package from git URL"
- 輸入以下 URL:
https://github.com/GameFrameX/com.gameframex.unity.google.protobuf.git
在專案的 Packages/manifest.json 檔案中新增:
{
"dependencies": {
"com.gameframex.unity.google.protobuf": "https://github.com/GameFrameX/com.gameframex.unity.google.protobuf.git"
}
}- 下載最新版本發佈包
- 解壓縮到專案的
Packages目錄下 - Unity 會自動辨識並載入包
protobuf-net 使用文檔請造訪 protobuf-net/protobuf-net。
ProtobufMessageSerializer 會在載入時自動註冊。如果需要替換或手動註冊:
// 手動註冊(例如在重設全域序列化器之後)
MessageSerializerRegistry.RegisterGlobal(new ProtobufMessageSerializer());
// 作為單通道覆蓋使用
var helper = new DefaultNetworkChannelHelper();
helper.SetChannelSerializer(new ProtobufMessageSerializer()); // 必須在 Initialize() 之前呼叫詳見 CHANGELOG.md。
本專案基於 MIT 協議開源,詳見 LICENSE.md。
