xlua學習之路(二)xlua基礎

2021-09-24 09:43:52 字數 1222 閱讀 7335

1.執行字串

xlua.luaenv luaenv = new xlua.luaenv();

luaenv.dostring("cs.unityengine.debug.log('hello world')");

luaenv.dispose();

1、dostring引數為string,可輸入任意合法的lua**,本示例在lua裡呼叫c#的unityengine.debug.log列印了個日誌。

2、乙個luaenv例項對應lua虛擬機器(lua環境),出於開銷的考慮,建議全域性唯一。

2.載入lua檔案

1.拖拽lua文字

public textasset luascript;

public luaenv luaenv = new luaenv();

private luatable scriptenv;

void awake()

2.用lua的require函式即可

luaenv.dostring("require 'load'")
require實際上是調乙個個的loader去載入,有乙個成功就不再往下嘗試,全失敗則報檔案找不到。 目前xlua除了原生的loader外,還新增了從resource載入的loader,需要注意的是因為resource只支援有限的字尾,放resources下的lua檔案得加上txt字尾(見附帶的例子)。

建議的載入lua指令碼方式是:整個程式就乙個dostring("require 'main'"),然後在main.lua載入其它指令碼(類似lua指令碼的命令列執行:lua main.lua)

3.自定義loader

在xlua加自定義loader是很簡單的,只涉及到乙個介面:

public delegate byte customloader(ref string filepath);

public void luaenv.addloader(customloader loader)

luaenv.addloader(loader);

luaenv.dostring("require 'load'", "custumloader", scriptenv);

public byte loader(ref string filename)

這是乙個簡單的案例

Xlua 學習記錄(一)Xlua 案例學習

有空看了下lua,研究下xlua。筆記如下 void start 1 dostring引數為string,可輸入任意合法的lua 本示例在lua裡呼叫c 的unityengine.debug.log列印了個日誌。2 乙個luaenv例項對應lua虛擬機器,出於開銷的考慮,建議全域性唯一。考慮全域性唯...

Xlua基礎 二 C 呼叫Lua

1.呼叫lua的乙個全域性的變數 env new luaenv env.dostring require helloworld env.global.get str 很簡單,泛型型別裡寫變數的型別,引數傳變數名。2.訪問全域性table 1 將table對映到class 將lua table中的鍵名...

Xlua基礎 三 Lua呼叫C

1.new c 物件 local newgameobj cs.unityengine.gameobject local newgameobj2 cs.unityengine.gameobject helloworld print newgameobj,newgameobj2 2.訪問靜態屬性,方法 ...