Cocos2dx Lua 绑定

所谓lua绑定就是说在lua中可以调用c++的类或者函数,整个过程细分为九步

1.下载配置环境
2.编写定义的c++类
3.修改ini文件
4.修改genbindings.py
5.运行genbindings.py
6.修改lua_cocos2dx_custom_auto.cpp文件
7.注册给lua使用
8.导入vs编译
9.调用

1.下载配置环境

如果你写过cocos2dx的工程,那么你应该存在python这一最基本的环境。l
ua绑定需要如下环境:
1.python:版本2.7.5 ,在系统变量中的path后加上python的安装路径,一般都是c/python27
2.ndk:版本ndk-r9d,在系统变量中新添变量名NDK_ROOT,变量为ndk解压的目录
3.下载PyYAML-3.10.win32-py2.7.exe,安装到python目录下,一般会自动安装到python目录下,无需手动选择。
4.下载Cheetah,将其放在C:\Python27\Lib\site-packages目录下

2.编写定义的c++类

c++类可以写在任何地方,个人习惯,笔者在

 工程目录/frameworks\cocos2d-x\cocos

下新建一个custom文件夹,将自定义类放在其中。


Cocos2dx Lua 绑定_第1张图片
1.png

3.修改ini文件

首先找到

 工程目录\frameworks\cocos2d-x\tools\tolua

复制一份cocos2dx.ini并改名为cocos2dx_custom.ini,打开cocos2dx_custom.ini。
做如下修改

Cocos2dx Lua 绑定_第2张图片
2.png

修改图中四个地方,注意修改成自己的类名
target_namespace = cc表示命名空间
如果有多个类要绑定,则用空格隔开

4.修改genbindings.py

该文件在

 工程目录\frameworks\cocos2d-x\tools\tolua
Cocos2dx Lua 绑定_第3张图片
3.png

打开genbindings.py文件

Cocos2dx Lua 绑定_第4张图片
4.png

在cmd_args 中加入

'cocos2dx_custom.ini' : ('cocos2dx_custom', 'lua_cocos2dx_custom_auto'), \

注:python注释为#,这里将cmd_args其他的元素注释掉是因为这些文件都是生成过得,没必要再生成浪费时间
这行代码表示在cocos2dx_custom中找到cocos2dx_custom的模块,然后生成lua_cocos2dx_custom_auto文件

5.运行genbindings.py

通过cmd的cd命令直接进入到tolua的mlu下,运行genbindings.py

Cocos2dx Lua 绑定_第5张图片
5.png

出现如图所示就说明桥接文件生成成功了。

6.修改lua_cocos2dx_custom_auto.cpp文件

上一步后,在

工程目录\frameworks\cocos2d-x\cocos\scripting\lua-bindings\auto

下便有了两个生成的文件

lua_cocos2dx_custom_auto.cpp
lua_cocos2dx_custom_auto.hpp
Cocos2dx Lua 绑定_第6张图片
6.png

打开
lua_cocos2dx_custom_auto.cpp
文件,修改成如图所示

Cocos2dx Lua 绑定_第7张图片
7.png

7.注册给lua使用

进入到文件夹

 C:\Users\user\Documents\Cocos\Link\frameworks\cocos2d-x\cocos\scripting\lua-bindings\manual

打开CCLuaStack.cpp,添加

#include "lua_cocos2dx_custom_auto.hpp"
register_all_cocos2dx_custom(_state);
Cocos2dx Lua 绑定_第8张图片
8.png
Cocos2dx Lua 绑定_第9张图片
9.png

8.导入vs编译

导入自定义的cpp和h文件

Cocos2dx Lua 绑定_第10张图片
10.png

导入cpp和hpp文件

Cocos2dx Lua 绑定_第11张图片
11.png

编译后没问题就可以在lua中调用我们自定义的c++类了。

9.调用

在lua中通过

 cc.自定义类名:函数名() 

来调用c++函数

你可能感兴趣的:(Cocos2dx Lua 绑定)