目前市面上的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+命名空間名