ET6框架(九)Protobuf消息使用

在这里插入图片描述


一、序列化和反序列化

序列化 : 将程序中的对象转化为字节序列的过程
反序列化 : 把字节回复为程序中的过程
在网络游戏通讯过程中,实际传输的数据形式是以字节序列进行传输
序列和反序列化的方式有多种,而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关键字,即可以在生成时自动生也列表
在这里插入图片描述


猜你喜欢

转载自blog.csdn.net/ww1351646544/article/details/141382709