XLua框架學習(一)執行lua指令碼

2021-09-29 11:19:33 字數 1933 閱讀 5131

using xlua;

luaenv luaenv =

newluaenv()

;//開啟lua虛擬機器,最好乙個程式只有乙個虛擬機器(占用效能)

luaenv.

dostring

("print('hello world!')");

//執行lua指令碼,輸出帶lua:字首

luaenv.

dispose()

;//關閉虛擬機器

另一種輸出(unity輸出),不帶lua字首

using xlua;

luaenv luaenv =

newluaenv()

; luaenv.

dostring

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

//輸出:hello world!

luaenv.

dispose()

;

using xlua;

textasset ta = resources.

load

<

textasset

>

("helloworld.lua"

)luaenv luaenv =

newluaenv()

; luaenv.

dostring

(ta.text)

; luaenv.

dispose()

;

using xlua;

luaenv luaenv =

newluaenv()

; luaenv.

dostring

("require 'helloworld'");

luaenv.

dispose()

;

自定義的loader相當於乙個委託,lua虛擬機器呼叫require找檔案時,預設先執行你自定義的loader,若返回乙個byte陣列,則執行byte陣列中lua指令碼。若返回空,在去調其他的loader委託函式,最終都沒找到,會呼叫預設的xlua的loader,直接讀取檔案。

注意:自定義loader引數為字串,返回值為byte陣列

using xlua;

luaenv luaenv =

newluaenv()

; luaenv.

addloader

(myloader)

;luaenv.

dostring

("require 'helloworld'");

輸出:123

luaenv.

dispose()

;private

byte

myloader

(ref

string filepath)

例:用自定義loader,實現讀取streamingassets資料夾下lua指令碼

using xlua;

luaenv luaenv =

newluaenv()

; luaenv.

addloader

(myloader)

;luaenv.

dostring

("require 'helloworld'");

//streamingassets下helloworld.lua.txt

luaenv.

dispose()

;private

byte

myloader

(ref

string filepath)

XLua熱更新框架學習(一)

1.建立新的unity專案,建立好資源管理資料夾 2.將xlua中的plugins和xlua資料夾拷貝到專案中 a.呼叫內部lua 1.引入xlua命名空間,在xlua中執行lua 的虛擬機器就是luaenv 2.乙個luaenv例項就是乙個lua虛擬機器,建議全域性唯一 luaenv luaenv...

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

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

XLua框架學習(三)C 訪問Lua中的全域性函式

function add print add endusing xlua luaenv luaenv newluaenv luaenv.dostring require csharpcalllua 需要先將lua指令碼載入進來 action add1 luaenv.global.get action...