Cocos2d x Lua基本操作

2021-07-14 16:18:15 字數 2294 閱讀 7994

1.lua庫引用

目錄新增:

lua

lua\luajit\include

lib新增:

lua51.lib;

2.開啟lua庫

示例:

lua_state* pl = lua_open();

luaopen_base(pl);

luaopen_math(pl);

luaopen_string(pl);

3.讀取lua值

示例:

/* 1.執行lua指令碼,返回0代表成功 */

int err = lual_dofile(pl, "hellolua.lua");

log("open : %d", err);

/* 2.重置棧頂索引 */

lua_settop(pl, 0);

lua_getglobal(pl, "myname");

/* 3.判斷棧頂的值的型別是否為string, 返回非0值代表成功 */

int isstr = lua_isstring(pl, 1);

log("isstr = %d", isstr);

/* 4.獲取棧頂的值 */

if(isstr != 0)

lua_close(pl);

4.獲取lua表

示例:

/* 執行指令碼 */

lual_dofile(pl, "hellolua.lua");

/* 重置棧頂元素 */

lua_settop(pl, 0);

/* 取得table變數,在棧頂 */

lua_getglobal(pl, "hellotable");

/* 將c++的字串放到lua的棧中,此時,棧頂變為「name」,hellotable物件變為棧底 */

lua_pushstring(pl, "name");

/*從table物件尋找「name」對應的值(table物件現在在索引為-2的棧中,也就是當前

的棧底)

取得對應值之後,將值放回棧頂

*/lua_gettable(pl, -2);

/* 現在表的name對應的值已經在棧頂了,直接取出即可 */

const

char* sname = lua_tostring(pl, -1);

log("name = %s", sname);

lua_close(pl);

5.c++呼叫lua函式

示例:

/* 執行指令碼 */

lual_dofile(pl, "hellolua.lua");

/* 重置棧頂元素 */

lua_settop(pl, 0);

/* 把helloadd函式物件放到棧中 */

lua_getglobal(pl, "helloadd");

/* 把函式所需要的引數入棧 */

lua_pushnumber(pl, 10);

lua_pushnumber(pl, 5);

/*執行函式,第乙個引數表示函式的引數個數,第二個引數表示函式返回值個數

lua會先去堆疊取出引數,然後再取出函式物件,開始執行函式

*/lua_call(pl, 2, 1);

int iresult = lua_tonumber(pl, -1);

log("iresult = %d", iresult);

6.lua呼叫c++函式

示例:

bool hellolua::init() 

lua_state* pl = lua_open();

luaopen_base(pl);

/* c++的函式和封裝函式都必須是靜態的,不知道可不可以不是靜態的?當然不可以 */

lua_register(pl, "cpp_getnumber", cpp_getnumber);

lual_dofile(pl, "hellolua.lua");

lua_close(pl);

return

true;

}int hellolua::getnumber(int num)

int hellolua::cpp_getnumber(lua_state* pl)

lua指令碼:

-- hellolua.lua檔案

local num = cpp_getnumber(10);

cocos2dx lua優化總結

渲染效率 紋理格式 執行效率 記憶體 包大小 cpp view plain copy 安卓啟用4444紋理 iftargetplatform cc.platform os android then cc.texture2d setdefaultalphapixelformat cc.texture2...

Cocos2dx lua 啟動流程

cocos2dx 版本 3.x,工具 vs2013 babelua外掛程式 1.lua工具,babelua 2.cocos2dx 建立lua工程 windows 7下,配置好cocos2dx環境後,使用命令列建立專案。cocos new mylua1 p com.your company.mygam...

cocos2dx lua 技巧收藏

一,語法糖 冒號呼叫 在cocos2d lua 裡面經常看到到 node move addto 這些方法 只需要在 函式 return self 即可 二 型別判斷 因為lua 是沒有指定型別的 所以經常用到 type 變數名 經常看到有人 這樣用 type 變數 string 每次都要寫 很有可能...