大侠们unity怎么在lua中用protobuf的

 我来答
伶俐又柔美灬小鸥01
2018-04-17 · TA获得超过6466个赞
知道小有建树答主
回答量:24
采纳率:0%
帮助的人:1.3万
展开全部

unity在lua中用protobuf可以在PC或者移动设备上使用。

lua-protobuf的高层接口:

pb.dll 提供四个模块:

1、pb模块:高层接口,提供和pbc兼容的encode/decode接口。

2、pb.conv:这是一个转换工具库,负责在Lua里方便地在protobuf提供的各种类型和Lua原生类型之间转换。

3、pb.slice:提供了底层的protobuf协议解析能力,能够在不知道message的情况下解析协议二进制数据。

4、pb.buffer:提供了底层的protobuf的协议序列化能力,能够在不知道message的情况下序列化信息。

5、http://pb.io:这个主要是为写protoc插件使用的。protoc会把pb二进制文件通过stdin传递给插件,然而stdin在Windows下默认是用文本模式打开的,这就会导致解析错误。因此http://pb.io提供了二进制模式下的IO读写功能。

lua-protobuf高层接口还提供了这些函数:

1、pb.clear(),清除之前注册的所有消息。

2、pb.clear(msgName),清除某个之前注册的消息

3、pb.load(chunk),直接解析字符串/Slice格式的二进制pb数据注册消息。

lua-protobuf底层接口:

底层接口和C接口主要的功能是在没有/不知道pb数据的情况下,解析二进制的protobuf数据。通常情况下是用不上的,如果有需求的话后续会在这里更新使用说明。

受司大人
2015-02-11 · 知道合伙人影视综艺行家
受司大人
知道合伙人影视综艺行家
采纳数:20253 获赞数:171848
毕业于浙江广厦,有一定的电脑专业基础和两年工作经验,读过相关书籍多本

向TA提问 私信TA
展开全部
客户端lua,通信协议是protobuf,以前用网易的proto-gen-lua,使用过程遇到些问题需要绕,比如:
1、每次更改、增加proto都要生成新的文件,代码规模剧增
2、由于lua本身,每个文件最大文件内全局local变量不能超过200个,所以当proto规模太大时,生成的
lua文件就不能用,需要把proto拆分
3、我之前做proto-gen-lua的集成,好像使用protobuf2.5的不行,被迫只能用2.4了,然后对proto里message
的格式支持不全,比如message内包含其他的message是不行的,无奈只能把要包含的message定义再写
在message内部

最近新项目,想研究下protobuf的动态解析,于是在github上发现了这个项目:
https://github.com/zhanjunxiong/luapb

项目里先把protobuf集成进来,然后把这个luapb的cpp文件也加进来,luapb这个项目里的Singleton.h不是跨平
台的,可以自己修改下 单例的代码,然后就可以用了

这几天折腾的时候遇到点bug,给作者提交后作者很快修复了,具体用法,可以参考项目的test例子,也可以到
issue列表去查看:
https://github.com/zhanjunxiong/luapb/issues/2

动态解析的序列化反序列化效率肯定比生成代码差很多,所以高并发server可能不适用,客户端没太大影响
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式