详见github: https://github.com/bianpeng001/bLua
Unity3D下面的脚本方案, 更新热更新方案, 也算是百家争鸣. 我之前用的是tolua的方案, 比较了其他几个
1. ilruntime,injectfx, 为代表的直接解释执行ilcode的方案, 这个思路不错的, 但是性能总归是个问题.
2. xlua: 用csharp开发, 拿lua来做补丁.
3. tolua: 尽量用lua做开发
最后选了tolua这个方向. 主要理由还是lua语言群众基础好, 性能好, 以及, 反正用了, 不如多用用. 业务代码都用lua来实现, 开发期间也方便了. 然后平时也用lua, 则对lua的熟练度会高很多.
实际用下来, tolua还是很方便的, 代码结构也比较清晰, 但由于我们使用的比较重度. 也发现了一些问题.
1. wrap注册量很大, 占用的内存和初始化时间, 不可小觑. 15k个函数, 常量和枚举也很多.
2. wrap代码量非常大, 20w行, 转换成il2cpp之后, 只会更多.
3. 顺便更新下lua版本, 享受下新版本的特性, 比如int64, 分代GC等..
为了解决这几个问题, 做了一些修改, 有一些方案不太好合并到原来的代码里面去了, 还不如重新写一个了. 刚开始写, 还在解决一些功能和crash
还有一些其他的改进,