1.輸出lua指令碼內容:
void start ()
2.自定義loader
void start ()
private byte myloader(ref string filepath)
3.載入變數
double a = luaenv.global.get("a");//獲取到lua裡面的全域性變數 a
print(a);
//1,通過class(struct)
//值拷貝,改變任意一者,不會改變對方並且耗費效能
//可以吧型別載入到gcoptimize生成降低開銷
person p = luaenv.global.get("person");
print(p.name + "-" + p.age + "-" + p.age2);
p.name = "sikiedu.com";
luaenv.dostring("print(person.name)");
//2,通過inte***ce
//引用方式,方法裡面第乙個引數是隱藏引數,傳遞自身物件
//需要在inte***ce前面加上特性 [csharpcalllua]
iperson p = luaenv.global.get("person");
print(p.name + "-" + p.age);
p.name = "sikiedu.com";
luaenv.dostring("print(person.name)");
p.eat(12, 34);// p.eat(p,12,34);
//3,通過dictionary、list
//輕量級 前提是table裡面value和key型別需要一致
dictionarydict = luaenv.global.get>("person");
foreach (string key in dict.keys)
listlist = luaenv.global.get>("person");
foreach (object o in list)
//4,通過luatable,不推薦使用
//不需要生成**,,但是很慢,比方式2慢乙個數量級,而且沒有型別檢查
luatable tab = luaenv.global.get("person");
print(tab.get("name"));
print(tab.get("age"));
print(tab.length);
class person
[csharpcalllua]
inte***ce iperson
int age
void eat(int a,int b);
}
4.訪問函式
//訪問lua中的全域性函式
action act1 = luaenv.global.get("add");
act1();
act1 = null;//有繫結,沒這一步沒法釋放env
//1、對映到delegate
//效能好,型別安全,但是要生成很多**
add add = luaenv.global.get("add");
int resa = 0; int resb = 0;
int res = add(34, 78, out resa, out resb);
print(res);
print(resa);
print(resb);
add = null;
//2、對映到luafunction
//優缺點與前者正好相反
luafunction func = luaenv.global.get("add");
object os= func.call(1, 2);//可以傳遞任意型別引數,返回值是陣列
foreach(object o in os)
luaenv.dispose();
}
lua寫入c#
--例項化物件
cs.unityengine.gameobject("ss");
--debug
print(cs.unityengine.time.deltatime);
--給靜態變數賦值
cs.unityengine.time.timescale=0.5
--方法,把cs.unityengine作為乙個變數存起來,簡單還節省記憶體
local gameobject=cs.unityengine.gameobject
camera=gameobject.find("maincamera")
//使用.需要把自身作為第乙個引數傳遞
cameraconmmpont=camera.getcomponent(camera."camera")
//使用:不需要
cameraconmmpont=camera:getcomponent(camera."camera")
Lua 和 C 互相呼叫
api有一系列的壓棧函式,為了將棧頂的lua值轉換成c值,我們為每種型別定義乙個對應的函式 void lua pushnil lua state l void lua pushboolean lua state l,int bool void lua pushnumber lua state l,d...
c和lua的互相呼叫
lua和c的互相呼叫 適用於mac os 一 c呼叫lua test.c include include include include lua state l int getadd int x,int y int main int argc,char argv add.lua function a...
Lua 指令碼語言 與 C的互相呼叫
lua訪問c 將c的函式包裝成lua環境認可的函式 將包裝好的函式註冊到lua環境中 lua呼叫c函式時,c函式從棧中獲取引數,並將計算結果壓入棧,並返回壓入棧的結果的數量 從lua指令碼中呼叫c 函式,函式必須定義lua cfunction型別。格式如下 int lua cfunction lua...