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

2021-09-29 19:26:39 字數 2417 閱讀 1064

function add()

print

("add"

)end

using xlua;

luaenv luaenv =

newluaenv()

;luaenv.

dostring

("require 'csharpcalllua'");

//需要先將lua指令碼載入進來

action add1=luaenv.global.

get<

action

>

("add");

add1()

;add1=

null

;//注意這邊要釋放掉add1對lua中方法的引用,否則dispose的時候會報錯

dispose()

;

注意:若要對映為帶引數的委託action,則要給其新增[csharpcalllua]屬性生成一部分**,action預設新增了,因此若要對映帶引數的全域性函式,最好自定義委託

function add

(a,b)

print

(a+b)

end

using xlua;

[csharpcalllua

]delegate

void

add(

int a ,

int b)

;luaenv luaenv =

newluaenv()

;luaenv.

dostring

("require 'csharpcalllua'");

//需要先將lua指令碼載入進來

add add1=luaenv.global.

get<

add>

("add");

add1(66

,73);

add1=

null

;//注意這邊要釋放掉add1對lua中方法的引用,否則dispose的時候會報錯

dispose()

;

function add

(a,b)

return a+b,a,b

end

using xlua;

[csharpcalllua

]delegate

intadd

(int a ,

int b ,

out outa ,

out outb)

;luaenv luaenv =

newluaenv()

;luaenv.

dostring

("require 'csharpcalllua'");

//需要先將lua指令碼載入進來

int outa,outb;

add add1=luaenv.global.

get<

add>

("add");

int result =

add1(66

,73,out outa,

out outb)

;print

(result)

;//139

print

(outa)

;//66

print

(outb)

;//73

add1=

null

;//注意這邊要釋放掉add1對lua中方法的引用,否則dispose的時候會報錯

dispose()

;

這邊lua函式的第乙個返回值會給c#中的返回值,之後的返回值按順序給out或ref引數

優點:簡單,方便,**量少

缺點:效能比較慢

function add

(a,b)

return a+b,a,b

end

using xlua;

luaenv luaenv =

newluaenv()

;luaenv.

dostring

("require 'csharpcalllua'");

//需要先將lua指令碼載入進來

luafunction func = luaenv.global.

get<

luafunction

>

("add");

object

os=func.

call(1

,2);

foreach

(object i in os)

dispose()

;

xLua學習總結(三) C 訪問lua中資料

1.將lua中基本資料對映到c 型別 lua中資料 a 1 str 小明 檔案編碼改為utf 8 isright true c int a env.global.get a string str env.global.get str bool isright env.global.get isrig...

XLua學習 C 訪問Lua 變數,表,函式

首先通過luaenv.dostring 獲取到lua中的內容。然後通過luaenv.global.get方法可以對其中的屬性進行獲取。luaenv env new luaenv env.dostring require csharpcalllua lua檔名 1.獲取全域性變數的基本屬性型別 例 l...

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

using xlua luaenv luaenv newluaenv 開啟lua虛擬機器,最好乙個程式只有乙個虛擬機器 占用效能 luaenv.dostring print hello world 執行lua指令碼,輸出帶lua 字首 luaenv.dispose 關閉虛擬機器另一種輸出 unity...