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

2021-10-01 14:45:54 字數 2342 閱讀 7917

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("isright");

2.將lua中的table對映到c#中的listlua 

tablelist=

tablelist1=

c#

//注意lua中的資料型別

listintlist = env.global.get>("tablelist");

liststrlist = env.global.get>("tablelist1");

3.將lua中的table對映到c#中的dictionary

dic=  --注意此處  key1 不能寫成  "key1"
dictionarydic = env.global.get>("dic");
4.將lua中的table對映到c#中的class或structlua

person=
c#

class person

struct personstruct

person per = env.global.get("person");

personstruct per1 = env.global.get("person");

5.將lua中的table對映到c#中的inte***ce

[csharpcalllua]//此處注意必須打上此標籤!!

inte***ce iperson

int age

}iperson per2 = env.global.get("person");

特別注意,對映到介面時,必須在此介面上打上[csharpcalllua]標籤!!!而且需要生成**,註冊xlua選單中的generatecode  hotfix inject in editor.

如果打上標籤後仍會報以下錯誤

可能是你的unity版本太新了。。。。,同樣的在lua方法對映到c#委託的時候也可能會遇到。

6.將lua中的table對映到c#中的luatable

luatable table = env.global.get("person");

string name = table.get("name");

int age = table.get("age");

6.將lua中的全域性function對映到c#中的delegatelua:

function add(num1,num2)

return num1+num2

end

c#中定義委託

[csharpcalllua]

delegate int add(int num1, int num2);

add add = env.global.get("add");

debug.log(add(1, 2));

特別注意,對映到委託時,必須打上[csharpcalllua]標籤!!!而且需要生成**,註冊xlua選單中的generatecode  hotfix inject in editor.

6.將lua中的全域性function對映到c#中的luafunction

luafunction luafunc = env.global.get("add");

object res = luafunc.call(1, 2);

建議:table對映為inte***ce,function對映為delegate。

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

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

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

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

Xlua基礎 三 Lua呼叫C

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