Protocol Buffer
来源:互联网 发布:淘宝部分退款如何受理 编辑:程序博客网 时间:2024/05/21 02:20
目前市面上的unity手游开发主流数据通讯协议的解决方案。
数据通讯格式。
protobuf是google提供的一个开源序列化框架,类似于XML,JSON这样的数据表示语言,其最大的特点是基于二进制,
因此比传统的 XML表示高效短小得多。虽然是二进制数据格式,但并没有因此变得复杂,开发人员通过按照一定的语法
定义结构化的消息格式,然后送给命令行工具,工具将自 动生成相关的类,可以支持java、c++、python等语言环境。(注意原生不支持C#)
通过将这些类包含在项目中,可以很轻松的调用相关方法来完成业务消息的序列化与反序 列化工作。
ProtoBuf
基本语法
1.定义消息 message 关键字
message c2s_login_game_request{
required string name = 1;
required string password = 2;
1和2不是赋值 是分配标识号
}
2.分配标识号
<1>每个字段都有唯一的标识号。这些消息是用来在消息的二进制格式中识别各个字段的,一旦开始使用就不能在修改。
<2>最小的标示号可以从1开始,最大到2^229
<3>不可使用其中的[19000 -19999]的标识号
3.required(表示该值必须要设置)
4.optional(消息格式中该字段可以有0个或1个值 - 不超过1个)
5.repeated(重复的值的顺序会被保留,表示该值可以重复,相当于从c# list)
6.proto文件可以添加注释
7.导入定义如果想要使用的消息类型已经在其他.proto文件中已经定义过
你可以通过导入其他的.proto文件中的定义来使用它们。
写法如下:
import "myproject/other_protos.proto";
8.嵌套类型
你可以在其他消息类型中定义、使用消息类型,在下面的例子中,ItemInfo消息结构就定义在GetSelfItem_Response消息结构内,如:
message GetSelfItem_Response
{
message ItemInfo
{
required uint32 ItemID = 1;//道具ID
required uint64 ItemCount = 2;//数量
optional string property = 3;//属性
}
repeated ItemInfo Item = 1;
}
9.package+命名空间名
Protobuf源代码下载地址: https://github.com/mgravell/protobuf-net
使用方法:
1.创建需要使用protobuf作为交互格式的unity项目
2.将下载的源代码拷贝到Assets目录
3.导入unity之后会报一个错
解决:在 unity项目Assets目录中创建smcs.rsp文件,内容为-unsafe,其作用为可编译不安全代码。
4.重启unity 引擎,可以自动清除错误。
Proto To C#代码生成
使用命令符生成.cs文件:
也可以使用批处理工具快速生成cs文件
1.将proto文件放入工具proto文件夹
2.点击CreatCsharp批处理
3.打开CS文件夹获取自动生成的.cs文件
- protocol buffer
- protocol buffer
- Protocol Buffer
- protocol Buffer
- protocol buffer
- Protocol Buffer
- Protocol Buffer
- Protocol Buffer
- Protocol Buffer
- Protocol Buffer
- Protocol Buffer
- Protocol Buffer
- Protocol Buffer
- Protocol Buffer
- Protocol Buffer
- Google Protocol Buffer
- Protocol Buffer(Google) 學習筆記一
- Protocol Buffer Basics: C++
- 线程协程WWW
- 匿名委托Lambda表达式
- 消息系统
- unity几个路径以及热更新原理
- 抛出自定义异常,spring AOP事务不回滚的解决方案
- Protocol Buffer
- 序列化和反序列化
- C语音基础-数组12
- Stream
- C++抽象编程——内存管理(1)——动态分配与内存管理
- 优化
- C++ Primer 10 关联容器
- AssetBundle
- Python基础语法