cocos2dx luabind(绑定自定义类)

cocos2dx luabind(绑定自定义类),第1张

概述之前并没有接触到Lua,尤其现在cocos2dx 渐渐的以Lua和JS开发较多,所以最近就学着对Lua绑定自定义类,中间也是碰到很多问题,记录下分享出来,后面碰到还是可以解决的。 开发环境: 下面这些都是在Mac上通过 pip 安装 cocos2dx版本:3.13 NDK版本:R9B PyYAML版本:3.12 Cheetah 版本:2.4.4 上面的所需的系统环境可以在: /Fun/framew

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

总结

以上是内存溢出为你收集整理的cocos2dx luabind(绑定自定义类)全部内容,希望文章能够帮你解决cocos2dx luabind(绑定自定义类)所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1082315.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-27
下一篇 2022-05-27

发表评论

登录后才能评论

评论列表(0条)

保存