cocos2dx luabind(绑定自定义类)

前端之家收集整理的这篇文章主要介绍了cocos2dx luabind(绑定自定义类)前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

之前并没有接触到Lua,尤其现在cocos2dx 渐渐的以Lua和JS开发较多,所以最近就学着对Lua绑定自定义类,中间也是碰到很多问题,记录下分享出来,后面碰到还是可以解决的。

  • 开发环境:
    下面这些都是在Mac上通过 pip 安装
    cocos2dx版本:3.13
    NDK版本:R9B
    PyYAML版本:3.12
    Cheetah 版本:2.4.4

上面的所需的系统环境可以在:

/Fun/frameworks/cocos2d-x/tools/tolua/README.mdown

第一个Fun这个是项目的名称,在这个README文件中提出了所需的环境。不过这个里面是一个坑啊!!!他在这里面推荐使用的NDK R10C或者以上版本,当你使用这个版本的话编译绑定文件,会编译出错。WTF!!!
在genbindings.py 文件中最上方你可以看到

# genbindings.py
# This script is used to generate luabinding glue codes.
# Android ndk version must be ndk-r9b.

这是一个多么 * * 的问题啊

当你配置完成所需环境以后,然后就可以编写需要提供给Lua使用的C++文件了。
我这边直接在里面添加需要绑定的类。

/Fun/frameworks/runtime-src/Classes/

自定义类的结构

#ifndef AnyLua_hpp
#define AnyLua_hpp

#include "cocos2d.h"
using namespace cocos2d;

class AnyLua
{
public:
    AnyLua(){}

    ~AnyLua(){}

    bool init();

    std::string getValue();
};

#endif /* AnyLua_hpp */
#include "AnyLua.hpp"

bool AnyLua::init()
{
    return true;
}

std::string AnyLua::getValue()
{
    return "AnyLua::getValue = 121";
}

接下来也就是一个重要的环节了,修改INI文件。INI文件所在位置:

/LuaClass/frameworks/cocos2d-x/tools/tolua/

在这个文件列表里面找一个复制重命名为AnyLua.ini,修改文件中部分位置

后面就是修改genbindings.py文件,我直接在元文件中进行的修改
修改文件中的141行的Python的字典数据

cmd_args = {'AnyImageView.ini' : ('AnyImageView','lua_AnyImageView_auto')}

然后在通过终端进入到当前目录:

/Fun/frameworks/cocos2d-x/tools/tolua

执行如下命令行:

python genbindings.py

如果所需环境安装正常,你就可以看到

--------------------------------- Generating lua bindings succeeds. ---------------------------------

当然上面这句是在终端里面显示的,CSDN这边上传图片出现了问题,所以就直接放了一段文字
执行绑定成功后,我们就可以把文件添加到项目中使用了。

/Fun/frameworks/cocos2d-x/cocos/scripting/lua-bindings/auto/

这个就是输出路径了,同样我们可以在genbindings.py里面修改输出路径
然而到这里并没有结束,就是导入的问题了。


由于在Xcode中添加Class文件要选择
添加Classes一定要选择使用Create groups
添加文件以后发现报错了,cpp文件中h文件找不到了。相信这个对你没有太大难度,使用相对路径添加上去就好了。 下面就是注册自定义类了,打开AppDelegate.cpp里面添加文件进行注册就可以使用我们的自定义类了。

猜你在找的Cocos2d-x相关文章