2.1 Protobuf的基本语法简介
上一章的最后一个问题就是,Protobuf为什么是跨语言的一门协议,我们的答案就是,它是通过Protobuf语法进行数据交换的,而下一层的数据byte转化的逻辑对于开发人员来讲是基本可以忽视的,就是一个黑箱。你只需要了解Protobuf的基本语法,就能够知道模型的具体信息,不得不说,这在游戏开发,尤其是网络游戏开发时极具优势的一种策略、
2.2 Protobuf的基本语法课
本节主要讲即将会用到的基本语法,对于更加复杂的语法请上网自行摸索
2.2.1 定义一个基于Protobuf语法的Player模型
option java_outer_classname = "PlayerModel";//生成的数据访问类的类名
message Player{
required int32 id = 1;//同上
required int32 hp = 2;//必须字段,在后面的使用中必须为该段设置值
optional int32 skill = 3;//可选字段,在后面的使用中可以自由决定是否为该字段设置值
}
你可以在任意proto文件内进行编写该对象,进行编译后,你将会生成该proto文件对应的java文件,而PlayerModel将会生成到java文件夹里面:
使用:
输出:
2.2.2 Player模型的序列化:
....简直无法相信,同样数据量如果使用json来进行交换,那个数据量是相当恐怖的
你可以算一下:
{
hello worldid: 1,
hp: 33,
skill: 123
}
这个字数有多少个,然后转化成ascii码...
果然,protobuf牛逼!
2.2.3 Player模型的反序列化:
最后还是要说一句:
protobuf牛逼!