protobuf 嵌套消息的使用
来源:互联网 发布:nba2k17邓肯捏脸数据 编辑:程序博客网 时间:2024/05/29 03:57
protobuf的简单的使用,不过还留下了一个问题,那就是之前主要介绍的都是对简单数据的赋值,简单数据直接采用set_xx()即可,但是如果不是简单变量而是自定义的复合类型变量,就没有简单的set函数调用了,下面看一个简单的例子。
在网络游戏中,游戏玩家之间的同步是一个最基本的功能,而同步是通过对坐标的广播进行的,因此我们假设一个简单的模型,当一个玩家的位置发生变化时,将玩家的新位置发给地图内所有玩家,根据这个情况写出以下proto文件。
这样就有一个问题,现在的游戏都是3D游戏,因此需要xyz来表示位置,还需要另一组xyz来表示朝向,如果用简单变量的话就会显的很乱,而且无论是位置还是朝向其实都是一组xyz,因此可以将xyz抽出来成为一个复合数据类型,单独放在一个文件中。这样就构成以下文件。 编译的时候先编译vector文件,采用import时需要注意路径,本例中两文件在同一目录下。proto对应的文件已经生成了,但是该怎么赋值呢,查API查了半天有点不知所以,干脆来看生成的类文件的源代码吧
上面列出了生成的部分源代码,主要是PlayerPos的操作变量的函数,第一个playID很简单,可以看到直接使用set_playerid ( ) 即可,但是对于嵌套的pos 发现没有对应的set_pos方法,不过发现了一个set_allocated_pos() 函数,这个函数也是set开头的,看看这个函数是干嘛的。
编译没问题,但是运行时出现错误,而且是很奇怪的错误,仔细了查看一下PlayerPos的源码,发现一个问题
这样即可,编译运行都没有问题。
如此之外,还有一种赋值方法,就是调用mutable_pos()
0 0
- protobuf 嵌套消息的使用
- protobuf 中的嵌套消息的使用
- protobuf 中的嵌套消息的使用
- protobuf 中的嵌套消息的使用 主要对set_allocated_和mutable_的使用
- protobuf 中的嵌套消息的使用 主要对set_allocated_和mutable_的使用
- 使用protobuf定义消息
- 使用protobuf定义消息
- 使用protobuf和socket实现服务器间消息的传递
- protobuf的nested message嵌套消息。有时会出现序列话再反序列化后,嵌套消息的指却没有了
- protobuf消息的自动派发
- 【Google Protobuf】protobuf的使用(二)
- Google Protobuf的使用
- protobuf的使用初探
- ProtoBuf 的java使用
- protobuf的使用
- ProtoBuf 的java使用
- protobuf的使用
- ProtoBuf 的java使用
- Android JNI 使用别人的.so类库(盗版美图秀秀)
- C# 反射
- 分区表 UDF
- [unity3D基础篇03]必备的3D数学基础2
- Java String intern方法介绍
- protobuf 嵌套消息的使用
- 深度学习——引用量最高的20篇论文(2014-2017)
- Linux Tomcat日志查看实用命令
- 设置datepicker日期可选范围为当前年份第一天或者当前月份第一天至当前日期
- controller 不能释放,不走dealloc方法的4种可能
- HTTP中Get与Post的区别
- maven在打war包时将资源文件打包到classes目录下
- 你真的会用Gson吗?Gson使用指南(三)
- 用Bootstrap创建表格,并初始化一行背景色