Protocol Buffer

目前市面上的unity手游開發(fā)主流數(shù)據(jù)通訊協(xié)議的解決方案。

數(shù)據(jù)通訊格式。

protobuf是google提供的一個開源序列化框架,類似于XML,JSON這樣的數(shù)據(jù)表示語言,其最大的特點是基于二進制,

因此比傳統(tǒng)的 XML表示高效短小得多。雖然是二進制數(shù)據(jù)格式,但并沒有因此變得復雜,開發(fā)人員通過按照一定的語法

定義結構化的消息格式,然后送給命令行工具,工具將自 動生成相關的類,可以支持java、c++、python等語言環(huán)境。(注意原生不支持C#)

通過將這些類包含在項目中,可以很輕松的調用相關方法來完成業(yè)務消息的序列化與反序 列化工作。


ProtoBuf

基本語法

1.定義消息 message 關鍵字

message c2s_login_game_request{

required string name = 1;

required string password = 2;

1和2不是賦值 是分配標識號

}


2.分配標識號

<1>每個字段都有唯一的標識號。這些消息是用來在消息的二進制格式中識別各個字段的,一旦開始使用就不能在修改。

<2>最小的標示號可以從1開始,最大到2^229

<3>不可使用其中的[19000 -19999]的標識號


3.required(表示該值必須要設置)


4.optional(消息格式中該字段可以有0個或1個值 - 不超過1個)


5.repeated(重復的值的順序會被保留,表示該值可以重復,相當于從c# list)


6.proto文件可以添加注釋


7.導入定義如果想要使用的消息類型已經(jīng)在其他.proto文件中已經(jīng)定義過

你可以通過導入其他的.proto文件中的定義來使用它們。

寫法如下:

import "myproject/other_protos.proto";


8.嵌套類型

你可以在其他消息類型中定義、使用消息類型,在下面的例子中,ItemInfo消息結構就定義在GetSelfItem_Response消息結構內,如:

message GetSelfItem_Response

{

message ItemInfo

{

required uint32 ItemID = 1;//道具ID

required uint64 ItemCount = 2;//數(shù)量

optional string property = 3;//屬性

}

repeated ItemInfo Item = 1;

}


9。package+命名空間名

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

友情鏈接更多精彩內容