文章目录
- 一、序列化和反序列化
- 二、什么是Prototbuf?
- 三、ET工程中的Proto:
- 四、查看消息类型
- 五、生成编译Proto2CS:
一、序列化和反序列化
序列化 : 将程序中的对象转化为字节序列的过程
反序列化 : 把字节回复为程序中的过程
在网络游戏通讯过程中,实际传输的数据形式是以字节序列进行传输
序列和反序列化的方式有多种,而ET框架则使用较为常见的Protobuf方式。
二、什么是Prototbuf?
Protobuf是一个用于生前通讯消息的代码生成器。
Prototbuf是一个Google公司提出的开源的轻便高效的结果化数据存储格式。
相对于其他常见的序列格式如Json、XML等格式,Protobuf具有易用性更好,自动化,兼容性数量小,序列化及反序列化速度更快等优势。
三、ET工程中的Proto:
在工程中ET > Proto文件夹中的proto有描述文件
建议使用VSCode打开,并安装vccode-proto3插件进行查看
OuterMessage.proto
此文件定义的是客户端与服务磁端相互通讯的消息格式
InnerMessage.proto
服务器内部相互通讯的消息格式
MongoMessage.proto
服务器内部相互通讯的消息格式,与InnerMessage不同的是MongoMessage可以传输实体
查文件夹Unity.Model > Codes > Model > Generate > Message > OuterMessage.cs 及 OuterOpcode.cs
这两个脚本里包含了一些数据结构,匀为根据OuterMessage.proto来生成
需要注意的是消息中的不同数据,数值不能相同,如下面的objectQueryRequest消息中已有90 1 2三个数据,则myKey则不能赋值为此三个数值之一
等号和数字之间需要有空格
四、查看消息类型
五、生成编译Proto2CS:
优先需要编译Tools
在工程中ET > Proto文件夹中点击win_startProtoExport.bat文件 进行生成
关于苹果不能使用.bat文件
可以选择此处Edit Configuration…
在Tools.App中的Program arguments:中输入 --AppType=Proto2CS,然后点击Apply即可
生成表可也可以这样操作–AppType=ExcelExporter
生成列表:
在消息表中使用repeated关键字,即可以在生成时自动生也列表