關(guān)于LUA應(yīng)用筆本操作
關(guān)于LUA應(yīng)用筆本操作死本文要介紹的內(nèi)容,主要是來了解并學(xué)習(xí)LUA應(yīng)用。游戲中的界面都是用LUA來寫,這個(gè)和WOW是一模一樣的,嗯,以后再慢慢研究.年終了,保存下先.
lua語言規(guī)則:
- lua_State *L = lua_open(); //建立一個(gè)LUA狀態(tài)機(jī)
- luaopen_base(L); // 啟動(dòng)它
- const char *buf = "print('hello, world!')";
- lua_dostring(buf); //把buf寫入到lua中并執(zhí)行
- lua_close(L); // 關(guān)閉L
- lua_pushstring(L, "var"); //將變量的名字放入棧]
- lua_getglobal(L, "var"); //變量的值現(xiàn)在棧頂
- int var = lua_tonumber(L, -1); //取得棧頂?shù)脑?nbsp;
- lua_tostring( ls, -1 ); //取得棧頂?shù)牡脑? 一般用于參數(shù)傳遞
- lua_pushstring( ls, s_szPlayer ); //把某個(gè)字符串元素壓入棧中,可用于參數(shù)傳出
- lua_pushnumber(L, 200); //把某個(gè)數(shù)字元素壓入棧中,
- lua_register(L, "foo", foo);
- //把自己在C++中編寫的函數(shù)foo拿到lua中注冊(cè),這樣在lua腳本中就可以調(diào)用這個(gè)函數(shù)
在Lua中,函數(shù)等同于變量,所以你可以這樣來取得這個(gè)函數(shù):
lua_getglobal(L, "main");//函數(shù)現(xiàn)在棧頂
現(xiàn)在,我們可以調(diào)用這個(gè)函數(shù),并傳遞給它正確的參數(shù):
- lua_pushnumber(L, 100); //將參數(shù)壓棧
- lua_pcall(L, 1, 1, 0); //調(diào)用函數(shù),有一個(gè)參數(shù),一個(gè)返回值 //返回值現(xiàn)在棧頂
- int result = lua_tonumber(L, -1);
例子:
- #include "lua.h"
- #include "lauxlib.h"
- #include "lualib.h" int foo(lua_State *L) {
- //首先取出腳本執(zhí)行這個(gè)函數(shù)時(shí)壓入棧的參數(shù)
- //假設(shè)這個(gè)函數(shù)提供一個(gè)參數(shù),有兩個(gè)返回值
- //get the first parameter const char *par = lua_tostring(L, -1);
- printf("%s\n", par); //push the first result lua_pushnumber(L, 100);
- //push the second result lua_pushnumber(L, 200);
- //return 2 result return 2;
- }
- int main(int argc, char *argv[]){
- lua_State *L = lua_open();
- luaopen_base(L);
- luaopen_io(L);
- lua_register(L, "foo", foo);
- const char *buf = "r1, r2 = foo("hello") print(r1..r2)";
- lua_dostring(L, buf);
- lua_close(L);
- return 0;
- }
小結(jié):關(guān)于LUA應(yīng)用筆本操作的內(nèi)容介紹完了,希望通過LUA應(yīng)用內(nèi)容的學(xué)習(xí)能對(duì)你有所幫助!