Unity3d 学习路线-网络传输协议protobuf

Posted Unity3D游戏开发精华教程干货

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Unity3d 学习路线-网络传输协议protobuf相关的知识,希望对你有一定的参考价值。

Google Protocol Buffer( 简称 Protobuf) 是 Google 公司内部的混合语言数据标准,目前已经正在使用的有超过 48,162 种报文格式定义和超过 12,183 个 .proto 文件。他们用于 RPC 系统和持续数据存储系统。

Protocol Buffers 是一种轻便高效的结构化数据存储格式,可以用于结构化数据串行化,或者说序列化。它很适合做数据存储或 RPC 数据交换格式。可用于通讯协议、数据存储等领域的语言无关、平台无关、可扩展的序列化结构数据格式。目前提供了 C++、Java、Python 三种语言的 API。

google protocol buffers的应用范围非常广泛,但对于unity3d开发者来说,protobuf的最大用处在于编写网络游戏时,可以用它来传输数据内容,例如网络游戏中,玩家登录操作,需要传输用户名account和密码password给服务器,服务器验证成功,发送给玩家一条数据(如int a或者enum a),玩家收到数据后,依据a的值来判断,a==1表示可以登录,a==0表示密码错误不可以登录,这个过程中客户端和服务器之间传输网络数据用的就是Protobuf。

如果你没有用过protobuf,下载demo,然后跟随本文实践一下,那么针对protobuf的简单使用应该是没问题的;如果你一直在用protobuf,但是一直是别人写好的,那么研究一下本文demo,可以让你了解protobuf在unity3d中的使用搭建。

下载完成后,解压得到如下图1-图2所示工程结构图:




图1 networktest工程结构图

Unity3d 学习路线-网络传输协议protobuf

图2 unity3d工程图

工程实现了网络游戏中,用户登录大厅到进入房间这么个过程,从用户登录->用户进入大厅-->用户进入房间,到用户退出房间-->用户退出大厅-->用户退出,一共6个操作,代表了客户端与服务器的6次消息传输。接下来,我们按照步骤把这个过程实践出来。

1编写.proto文件

打开图1中所示protoToCs文件夹,在此文件夹中新建EnterLiveHallMsg.proto文件,并输入如下图3所示内容:

EnterLiveHallReq代表用户发送登录请求数据结构;

EnterLiveHallEsp代表服务器返回的结果。

Unity3d 学习路线-网络传输协议protobuf

图3 编写.proto文件

文件夹中相关的proto文件都已经编写好了,当然你可以自定义随意编写几个也没问题。

2 生成.cs类

在protoToCs文件夹中找到批处理文件:protoToCs.bat,该工具调用protogen.exe工具,工具依据当前文件夹中的所有proto文件生成相应的.cs类文件。

双击“protoToCs.bat”文件,弹出命令行工具,执行完成后,刚才我们编写的EnterLiveHallMsg.proto文件旁边出现了EnterLiveHallMsg.cs文件,该文件是自动生成的,不可更改,这样我们就完成了cs类的自动生成操作。

Unity3d 学习路线-网络传输协议protobuf

图4 生成cs文件。

3 数据导入工程中

把刚才编写的EnterLiveHallMsg.proto和自动生成的EnterLiveHallMsg.cs拷贝到工程中,如图5所示。到这里我们就可以在工程中调用EnterLiveHallMsg.cs中的数据结构进行功能编写了。

Unity3d 学习路线-网络传输协议protobuf

图5工程中网络数据

4 如何使用生成的cs文件

该工程中功能层面最重要的三个类是SendPacket.cs/ReceivePacket.cs/StartLiveRoom.cs.

内部逻辑功能比较简单,仅仅实现了用户登录大厅,进入房间的一个客户单示例。

图6 登录大厅操作

5 总结

读者拿到的是一个完整的demo工程,如果仅仅是想使用protbuf这个工具的话,有一个封装的比较好的版本可供下载,该工具完全可以作为独立的一个包使用,不需要考虑unity3d项目的功能是怎样的。

以上是关于Unity3d 学习路线-网络传输协议protobuf的主要内容,如果未能解决你的问题,请参考以下文章

Unity3D 学习路线?

Unity1.3 Unity3D游戏开发学习路线

unity3d学习路线

arp之协议学习路线

软件测试知识学习路线

(2018干货系列六)最新云计算学习路线整合