quick-cocos2dx将C++导出lua

来源:互联网 发布:传智播客php视频下载 编辑:程序博客网 时间:2024/05/16 05:07

可以按照官网教程来做。

个人总结,分为5步:

  1. 进行相关环境配置。

  2. 编写.h .cpp文件。

  3. 在引擎frameworks\cocos2d-x\tools\tolua目录下重写*.ini配置文件与genbindings.py脚本。

  4. 执行自定义的genbindings.py脚本,得到生成的lua_*_auto.cpp 和lua_*_auto.hpp文件。默认路径在frameworks\cocos2d-x\cocos\scripting\lua-bindings\auto下面。也可以修改genbindings.py第134行的输出目录 output_dir = ‘%s/cocos/scripting/lua-bindings/auto’ % project_root

  5. 调用register_all_***(lua_State* tolua_S)注册函数。

  6. 可以在lua中调用啦。
    ————————————————————-^_^——————————————————

    附:
    ini配置文件格式:
    注:加粗的表示一般需要我们自己修改的地方。

    [title]:要配置将被使用的工具/ tolua的/ gengindings.py脚本的称号。一般来说,标题可以是文件名。

    prefix:要配置一个函数名的前缀,通常,我们还可以使用文件名作为前缀。

    target_namespace:要配置在脚本层模块的名字。在这里,我们使用cc作为模块名,当你想在脚本层REF的名称,您必须将一个名为前缀,CC在名称的前面。例如,CustomClass可以参考作为cc.CustomClass。

    headers:要配置所有需要解析的头文件和%(cocosdir)s是的Cocos2d-x的引擎的根路径。

    classes:要配置所有绑定所需的类。在这里,它支持正则表达式。因此,我们可以设置MyCustomClass。*在这里,用于查找多个特定的用法,你可以对照到tools/tolua/cocos2dx.ini。

    skip:要配置需要被忽略的功能。现在绑定发电机无法解析的void *类型,并委托类型,所以这些类型的需要进行手动绑定。而在这种情况下,你应该忽略所有这些类型,然后再手动将它们绑定。你可以对照到配置文件路径下的cocos/scripting/lua-bindings/auto 。

    rename_functions:要配置的功能需要在脚本层进行重命名。由于某些原因,开发者希望更多的脚本友好的API,所以配置选项就是为了这个目的。

    rename_classes:不在使用。

    remove_prefix:不在使用。

    classes_have_no_parents:要配置是过滤器所需要的父类。这个选项是很少修改。

    abstract_classes:要配置的公共构造并不需要导出的类。

    script_control_cpp:是的。要配置脚本层是否管理对象的生命周期。如果没有,那么C++层关心他们的生命周期。
    现在,它是不完善的,以控制原生对象的续航时间在脚本层。所以,你可以简单地把它设置为no。
    —————————————————^_^————————————————
    可能出现的问题:
    1、LUA ERROR: [string “.\app/view/MyView.lua”]:103: error in function ‘lua_mysprite_MySprite_getNum’.
    E:/myGenie/src/app/view/MyView.lua
    16:07:44 argument #1 is ‘table’; ‘MySprite’ expected.
    原因:我导出的MySprite只是一个类,在使用时直接调用其中的方法,并没有创建这个类,故MySprite并未被实例化。
    解决方案:将要调用的方法getNum加static关键字。

0 0
原创粉丝点击