• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

bindings-generator脚本的使用(lua 调 c++)

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

bindings-generator脚本的使用:
1、写自己的C++类,按照Cocos2d-x的规矩,继承cocos2d::Ref类,以便使用Cocos2d-x的内存回收机制。当然不这么干也行,但是不推荐,不然在Lua环境下对象的释放狠麻烦。

2、编写一个.ini文件,让bindings-generator可以根据这个配置文件知道C++类该怎么暴露出来

3、修改bindings-generator脚本,让它去读取这个.ini文件

4、执行bindings-generator脚本,生成桥接C++类方法

5、用Xcode将自定义的C++类和生成的桥接文件加入工程,不然编译不到

6、修改AppDelegate.cpp,执行桥接方法,自定义的C++类就注册进Lua环境里了

第一步:自定义c++类,存放于classes目录下,
第二步:编写.ini文件 在frameworks/cocos2d-x/tools/lua/目录下能看到genbindings.py脚本和一大堆.ini文件,这些就是bindings-generator的实际执行环境了。随便找一个内容比较少的.ini文件,复制一份,重新命名为MyClass.ini。大部分内容都可以凑合不需要改,这里仅列出必须要改的重要部分:
frameworks/cocos2d-x/tools/tolua/MyClass.ini
[MyClass]
prefix = MyClass
target_namespace = cc
headers = %(cocosdir)s/…/runtime-src/Classes/MyClass.h
classes = MyClass
注意:这个地方我踩了个坑。如果.ini配置文件中存在macro_judgement = …宏定义,要特别小心,我第一次是从cocos2dx_controller.ini文件复制来的,结果没注意macro_judgement,导致生成的桥接类文件加入了不该加入的宏,只在iOS和Android平台上才起作用,对Mac平台无效,这个要特别注意。

第三步:修改genbindings.py文件129行附近,将MyClass.ini文件加进去:

frameworks/cocos2d-x/tools/tolua/genbindings.py

cmd_args = {‘cocos2dx.ini’ : (‘cocos2d-x’, ‘lua_cocos2dx_auto’),
‘MyClass.ini’ : (‘MyClass’, ‘lua_MyClass_auto’),

(其实这一步本来是可以省略的,只要让genbindings.py脚本自动搜寻当前目录下的所有ini文件就行了)

第四步:cd到genbindings.py的目录,执行
python genbindings.py
成功执行genbindings.py脚本后,会在frameworks/cocos2d-x/cocos/scripting/lua-bindings/auto/目录下看到新生成的文件lua_MyClass_auto.hpp.
执行python脚本时会缺少yaml cheetah包,使用easy_install pip安装的pip可能会出问题,建议去github下载https://github.com/pypa/pip.git
下载完成后在终端cd到setup.py目录 运行sudo python setup.py install 成功安装pip后,使用pip install 下载对应包

第五步:在frameworks/cocos2d-x/cocos/scripting/lua-bindings/auto/找到自己的c++桥梁文件,加入xcode,
第六步:在appdelegate.cpp文件中添加头文件以及加入register_all_MyClass的调用
然后在对应的lua文件中通过cc.类名调用c++方法(cc可通过.ini文件的target_namespace设置)
原文地址:https://www.cnblogs.com/xiaonanxia/p/4987856.html


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
Lua语法发布时间:2022-07-22
下一篇:
COCOS2DX-LUA脚本开发之六利用Lua强转函数解决使用CCNode报错发布时间:2022-07-22
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap