所謂lua綁定就是說在lua中可以調(diào)用c++的類或者函數(shù)绰沥,整個(gè)過程細(xì)分為九步
1.下載配置環(huán)境
2.編寫定義的c++類
3.修改ini文件
4.修改genbindings.py
5.運(yùn)行g(shù)enbindings.py
6.修改lua_cocos2dx_custom_auto.cpp文件
7.注冊給lua使用
8.導(dǎo)入vs編譯
9.調(diào)用
1.下載配置環(huán)境
如果你寫過cocos2dx的工程亿蒸,那么你應(yīng)該存在python這一最基本的環(huán)境诗轻。l
ua綁定需要如下環(huán)境:
1.python:版本2.7.5 童擎,在系統(tǒng)變量中的path后加上python的安裝路徑,一般都是c/python27
2.ndk:版本ndk-r9d匾浪,在系統(tǒng)變量中新添變量名NDK_ROOT草慧,變量為ndk解壓的目錄
3.下載PyYAML-3.10.win32-py2.7.exe,安裝到python目錄下吸祟,一般會自動安裝到python目錄下瑟慈,無需手動選擇。
4.下載Cheetah欢搜,將其放在C:\Python27\Lib\site-packages目錄下
2.編寫定義的c++類
c++類可以寫在任何地方封豪,個(gè)人習(xí)慣,筆者在
工程目錄/frameworks\cocos2d-x\cocos
下新建一個(gè)custom文件夾炒瘟,將自定義類放在其中吹埠。
3.修改ini文件
首先找到
工程目錄\frameworks\cocos2d-x\tools\tolua
復(fù)制一份cocos2dx.ini并改名為cocos2dx_custom.ini,打開cocos2dx_custom.ini疮装。
做如下修改
修改圖中四個(gè)地方缘琅,注意修改成自己的類名
target_namespace = cc表示命名空間
如果有多個(gè)類要綁定,則用空格隔開
4.修改genbindings.py
該文件在
工程目錄\frameworks\cocos2d-x\tools\tolua
打開genbindings.py文件
在cmd_args 中加入
'cocos2dx_custom.ini' : ('cocos2dx_custom', 'lua_cocos2dx_custom_auto'), \
注:python注釋為#廓推,這里將cmd_args其他的元素注釋掉是因?yàn)檫@些文件都是生成過得刷袍,沒必要再生成浪費(fèi)時(shí)間
這行代碼表示在cocos2dx_custom中找到cocos2dx_custom的模塊,然后生成lua_cocos2dx_custom_auto文件
5.運(yùn)行g(shù)enbindings.py
通過cmd的cd命令直接進(jìn)入到tolua的mlu下樊展,運(yùn)行g(shù)enbindings.py
出現(xiàn)如圖所示就說明橋接文件生成成功了呻纹。
6.修改lua_cocos2dx_custom_auto.cpp文件
上一步后,在
工程目錄\frameworks\cocos2d-x\cocos\scripting\lua-bindings\auto
下便有了兩個(gè)生成的文件
lua_cocos2dx_custom_auto.cpp
lua_cocos2dx_custom_auto.hpp
打開
lua_cocos2dx_custom_auto.cpp
文件专缠,修改成如圖所示
7.注冊給lua使用
進(jìn)入到文件夾
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);
8.導(dǎo)入vs編譯
導(dǎo)入自定義的cpp和h文件
導(dǎo)入cpp和hpp文件
編譯后沒問題就可以在lua中調(diào)用我們自定義的c++類了。
9.調(diào)用
在lua中通過
cc.自定義類名:函數(shù)名()
來調(diào)用c++函數(shù)