加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

cocos2dx luabind(绑定自定义类)

发布时间:2020-12-14 17:14:39 所属栏目:百科 来源:网络整理
导读:之前并没有接触到Lua,尤其现在cocos2dx 渐渐的以Lua和JS开发较多,所以最近就学着对Lua绑定自定义类,中间也是碰到很多问题,记录下分享出来,后面碰到还是可以解决的。 开发环境: 下面这些都是在Mac上通过 pip 安装 cocos2dx版本:3.13 NDK版本:R9B PyYA

之前并没有接触到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里面添加头文件进行注册就可以使用我们的自定义类了。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读