开源基于 lua gc 管理 c++ 对象的 cocos2dx lua 绑定方案
cocos2dx 目前 lua 对应的 c++ 对象的生命周期管理,是基于 c++ 析构函数的,也就是生命周期可能存在不一致,比如 c++ 对象已经释放,而 lua 对象还存在,如果这时候再使用,会有宕机的风险,为此我开发了 cocos-lua 项目,基于 lua gc 管理 c++ 对象的生命周期。
cocos-lua 以 cocos2d-x 3.17.2 的 c++ 项目为基础,采用基于 lua gc 来管理 c++ 对象的生命周期,提供更丰富 cocos2d-x lua api,包括几乎除模版以外的所有 lambda(schedule、scheduleOnce…)函数回调,能够极大减少在 lua 层使用 c++ 对象的负担。
对比 cocos2dx-lua 目前方案,有以下几个优势
- lua gc 管理生命周期,更符合 lua 开发者,规避 c++ 现有生命周期问题。避免到处使用 tolua.isnull 判断,以及不知名的 crash。
- 导出代码相对 tolua 更精炼、高效率以及更友善错误检测机制。
- lambda 函数自动化的导出,tolua 是手动导出,
- 更优秀的第三方框架支持,如 fairygui、spine、dragonbone 之类的。
- 更加轻量和高效的 lua 绑定层。