cocos2dx3.x 綁定C++類給Lua

環境配置

根據cocos2d-x-3.5/tools/tolua/README.mdown的說明 安裝好環境c++

依賴:函數

  • Python(PyYAML, Cheetah)工具

  • ndk-r9blua

配置tolua的工具

根據tolua文件裏,引擎其餘的配置,依葫蘆畫瓢。code

複製一個genbindings.py,cocos2dx.ini修改參數。get

運行genbindings.py

根據上一步配置,將生成出tolua的中間文件。回調函數

若是失敗,試試去除掉一些頭文件。io

註冊Lua函數給C++

若是咱們須要註冊lua函數給C++,以便讓C++來回調Lua。function

(參考引擎裏addTouchEventListener)配置

c++:

typedef int LuaHandle;

void registerMsgCallbackFunc(LuaHandle handle);

在生成的C++中間文件中,修改下實現

int lua_cocos2dx_usercls_HandleMessageQueue_registerMsgCallbackFunc(lua_State* tolua_S) 中
將形參轉化爲LUA函數類型
LUA_FUNCTION arg0 =  toluafix_ref_function(tolua_S,2,0);
// ok &= luaval_to_int32(tolua_S, 2,(int *)&arg0, "HandleMessageQueue:registerMsgCallbackFunc");

C++中的調用Lua函數:

LuaStack *pStack = LuaEngine::getInstance()->getLuaStack();
pStack->pushString(messageContent.c_str());  // 傳一個String的參數做爲回調函數的形參
pStack->executeFunctionByHandler(luaHandler, 1);  // 調用函數, 並帶一個形參
相關文章
相關標籤/搜索