#c#訪問lua中的全域性變數
###c#**
luaenv = new luaenv();
luaenv.dostring("require 'csharpcalllua'");
//獲取lua中的全域性變數
string name = luaenv.global.get("name");
print("name:" + name);
int hp = luaenv.global.get("hp");
print("hp:" + hp);
bool isalive = luaenv.global.get("isalive");
print("isalive:" + isalive);12
3456
78910
1112
###lua**
print("c#訪問lua中的全域性變數");
hp = 100;
name = "yuki"
isalive = true12
34###輸出
c#訪問lua中的全域性變數
name:yuki
hp:100
isalive:true12
34#對映到class
對lua中的table中的變數的修改不會影響到對映到的c#中的class中的字段,反之也是。
這個過程是值拷貝,如果class比較複雜代價會比較大。而且修改class的字段值不會同步到table,反過來也不會。
###c#**
luaenv = new luaenv();
luaenv.dostring("require 'csharpcalllua'");
//對映到class
print("對映到class");
irole role = luaenv.global.get("yuki");
print("name:" + role.name);
luaenv.dispose();
class role12
3456
78910
1112
1314
15###lua**
yuki = 12
3###輸出
before modify hp in c#
lua: hp in lua is 100
after modify hp in c#
lua: hp in lua is 10012
34#對映到inte***ce
類似對映到class,但是對映方式為引用。
c#**中訪問lua,需要在該inte***ce上新增 [csharpcalllua] 的特性,而lua**中訪問c#則需要在lua對應位置新增 [luacallcsharp] 的特性
###c#**
luaenv = new luaenv();
luaenv.dostring("require 'csharpcalllua'");
//對映到inte***ce
print("對映到inte***ce");
irole role = luaenv.global.get("yuki");
print("before modify hp in c#");
luaenv.dostring("print('hp in lua is ' .. yuki.hp)");
role.hp -= 10;
print("after modify hp in c#");
luaenv.dostring("print('hp in lua is ' .. yuki.hp)");
luaenv.dispose();
[csharpcalllua]
inte***ce irole
int hp
bool isalive }1
2345
6789
1011
1213
1415
1617
1819
2021
###lua**
yuki = 12
3###輸出
before modify hp in c#
lua: hp in lua is 100
after modify hp in c#
lua: hp in lua is 90
xLua C 訪問Lua之訪問Lua的table
1.對映到普通class或struct 定義乙個class,有對應於table的字段的public屬性,而且有無引數建構函式即可,比如對於可以定義乙個包含public int f1 public int f2 的class。這種方式下xlua會幫你new乙個例項,並把對應的字段賦值過去。table的...
xLua C 訪問Lua之訪問Lua的變數
在resources資料夾中新建乙個csharpcalllua.lua.txt檔案,定義幾個變數 i 10 str wwz isstu false void start lua的number型別對於c 的int,float,double的,如果型別不對,會返回0比如在lua中i 10.1,c 中in...
xLua C 訪問lua中的全域性function
這種是建議的方式,效能好很多,而且型別安全。缺點是要生成 如果沒生成 會拋invalidcastexception異常 delegate要怎樣宣告呢?對於function的每個引數就宣告乙個輸入型別的引數。多返回值要怎麼處理?從左往右對映到c 的輸出引數,輸出引數包括返回值,out引數,ref引數。...