开源基于lua gc管理c++对象的cocos-lua项目

cocos-lua以cocos2d-x 3.17.2的c++项目为基础,采用基于lua gc来管理c++对象的生命周期,提供更丰富cocos2d-x lua api,包括几乎除模版以外的所有lambda(schedule、scheduleOnce…)函数回调,能够极大减少在lua层使用c++对象的负担。

优势

  1. lua gc管理生命周期,更符合lua开发者,规避c++现有生命周期问题。避免到处使用tolua.isnull判断,以及不知名的crash。
  2. 导出代码相对tolua更精炼、高效率以及更友善错误检测机制。
  3. lambda函数自动化的导出,tolua是手动导出,
  4. 更优秀的第三方框架支持,如fairygui、spine、dragonbone之类的。
  5. 更加轻量和高效的lua绑定层。

项目地址:https://github.com/zhongfq/cocos-lua

#欢迎拍砖

3赞

老哥牛逼 ! 顶~顶~顶~顶~顶~

牛,摸索一下看怎么用

如果使用中,遇到什么问题,可以发邮件给我。我目前正用这个新的框架开发公司新的app。

请问一下 QRSprite 这个lua中怎么用 从github上面下载的代码 发现luaopen_qrsprite注册的类 lua require报错 oluacls_class(L, “QRSprite*”, “cc.Sprite”);这种注册的对象lua怎么用
另外我自己用其他的办法注册 ,即把QRSprite*替换成kernel.QRSprite,总共三个地方
oluacls_class(L, “kernel.QRSprite”, “cc.Sprite”);
在DragonBonesTest中如下调用 发现并没有生成二维码
local QRS = require “kernel.QRSprite”
local qr = QRS.create(“test”)
self.cobj:addChild(qr)
qr:setPosition(500, 100)

兄弟 这个需要完整的olua框架 ,你就直接使用这个开原的框架吧 官方cocoslua 不行的

不好意思,这个QRSprite我没有仔细测试,现在已经修复了,你更新一下代码

oluacls_class注册的类,如何使用的问题,主要看olua_require的路径,你可以看一下libxgame/src/lua-bindings/lua-bindings.cpp,或者libxgame/src/lua-bindings/lua_cocos2d.cpp(拉到最后)。

如果在C++层是:
olua_require(L, “kernel.QRSprite”, luaopen_qrsprite);

那么在lua层就是:
local QRSprite = require “kernel.QRSrpite”

嗯,上面这种写法是没有问题require可以取到,我试过
oluacls_class(L, “QRSprite*”, “cc.Sprite”)我的意思你以前这种写法就取不到,直接require(“QRSprite*”)是不行。我拉取一下您二维码的更新看看效果。整体感觉这套lua比较简洁明了,导出代码可以少很多,非常好。另外怎么导接口到lua能够有一个简单文档介绍更完美。

帖子被官方移除了,有什么问题可以发邮件给我