前言
在使用到服务器通讯的时候,常规是使用Google的Protobuf协议格式进行序列化数据。
网上Unity简单的双端交互比较少涉及到protobuf,这里给出一个包括了Protobuf使用的简单demo。
这个模型重点在于讲解如何使用protobuf,所以网络相关的只是实现了功能,有需要的可以自己了解下相关细节进行重写。
效果
Protobuf使用
- 定义协议,然后使用protoc工具生成可使用的代码
- 注册协议
生成协议
-
文件
protoc.exe是google提供的协议转换器,需要使用命令行的形式去调用。
GenProtoc.bat是我封装了的命令行脚本,能将放在source的源协议生成到gen文件夹。 -
文件夹
source文件夹放的都是proto格式的协议文件。gen文件夹就是转换后的代码。
协议定义的时候要注意格式,例如int是不行的,要写明白是int32。具体的可以百度“protobuf协议”。
注册协议
注册要做两个:
- command和解释器。这两个值都是protobuf自动生成的。具体代码就在gen文件夹里。
- command和处理回调。处理回调就是业务代码,需要自己写。在业务回调代码中就可以对数据进行操作了。
业务
- 接收
承接上图,这里就是收到信息,protobuf进行了数据反序列化,用的时候转一下类型就可以了。
- 发送
new一个对象,然后赋值。根据command就可以发送了。注意command不要写错了,否则对方接收会错的。(这个大坑不容易查,血泪教训。。
插件
使用protobuf必须装GoogleProtobuf插件。demo里已经集合了,具体的可以自己看看。
网络模型
双端相同点是发送接收和对包体的填充解析,所以这一点可以合并在一起。其余的业务处理就需要各自继承重写了。
项目
测试版本:2018.3.8f1
下载:NetDemo.unitypackage