unity xlua protobuf

https://www.jianshu.com/p/d997e1f5e2ed

 

项目后期接入xlua,做代码的热更新。其中项目要求是任何逻辑都可以被热更,也可以完全的新增任何功能。其中消息用的是protobuf。
因为google 的protobuf c# 版本需要先对消息进行序列化好,然后作为c# 类使用的。但是这样非常的不利于做代码的热更新。
所以决定把pb接入到xlua里。看了下xlua 作者已经提供了集成pb的GitHub。
链接 https://github.com/chexiongsheng/build_xlua_with_libs

关于集成其他库 git上说的很清楚了。
这要是记录一下怎么使用
xlua hotfix 等配置好之后,在c# 侧初始化的时候调用
Luaenv.AddBuildin("pb", XLua.LuaDLL.Lua.LoadLuaProfobuf);

main.lua 加载protobufmain.lua
protobufmain.lua :
-- 核心解析
pb = require "pb"
-- 添加protoc
protoc = require "protobuf.protoc"

-- 监听消息-》解析
-- 此处是监听c# 原有的网络层回调,是一串二进制消息体
luadencode = require "protobuf.prasemsg"
luadencode.init()

-- 此处添加消息结构,也就是proto消息结构体
-- protoc:load(消息内容字符串)
protobuf = require "protobuf.proto"
protoc:load (protobuf.allmsg)

转化为二进制
byte[] msg = pb.encode(msgname, msgcontent)

二进制转换为表
msgtabel = pb.decode(msgname, msgcontent)



作者:Jayden_JMN
链接:https://www.jianshu.com/p/d997e1f5e2ed
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
posted @ 2020-02-27 01:18  00000000O  阅读(...)  评论(...编辑  收藏