Ulua的使用流程一般為:
1.實(shí)例化LuaState對(duì)象(new LuaState())
LuaState l = new LuaState( )
string str = "print('hello world 世界')";//代碼
2.加載Lua代碼
LuaState. DoString(str)
????? a.可以直接賦一段Lua代碼字符串巷帝,
? ? b.為了熱更新.可以指定一個(gè)Lua腳本文件,Unity不支持?jǐn)U展名為lua的文件,所以可將Lua腳本擴(kuò)展名定為txt(純文本文件),并用unity的TextAsset列表負(fù)責(zé)記錄所有腳本文件。建議列表中給每個(gè)腳本搭配一個(gè)string類型的ID芬膝,這樣憑此ID即可加載正確的lua腳本拣播;另外在LuaState類中新增一個(gè)String類型的public成員弊予,賦值為該ID嚷硫。這樣一旦某個(gè)Lua腳本在運(yùn)行時(shí)報(bào)錯(cuò)簿晓,可根據(jù)輸出的ID值判斷是哪個(gè)Lua腳本有錯(cuò)誤(關(guān)于TextAsset:TextAsset TXTFile = (TextAsset)Resources.Load()???? 肺孤;?TextWriter tw = new StreamWriter() )
? ? c.Lua里的預(yù)處理:
luanet.load_assembly("Assembly-CSharp")
luanet.load_assembly('UnityEngine')
Vector2 = luanet.import_type('UnityEngine.Vector2')
Vector3 = luanet.import_type('UnityEngine.Vector3')
GameObject = luanet.import_type('UnityEngine.GameObject')
luanet.import_type('System.Collections.Generic.List')
Debug = luanet.import_type('UnityEngine.Debug')
單獨(dú)寫個(gè)Lua腳本記錄上面的Lua常用預(yù)處理腳本罗晕,先加載一下這個(gè)腳本。Lua調(diào)用C#后赠堵,可以Import自定義C#類小渊,當(dāng)然在C#中實(shí)例化的LuaState也可以預(yù)定義一些Lua全局變量,這都是在C#里完成的茫叭,比如:
3.調(diào)用Lua代碼中的方法(GetFunction(string),LuaFunction.callFunction(string))酬屉。
其中,建議列表中給每個(gè)腳本搭配一個(gè)string類型的ID揍愁,這樣憑此ID即可加載正確的lua腳本蝴悉;另外在LuaState類中新增一個(gè)String類型的public成員最域,賦值為該ID楷怒。這樣一旦某個(gè)Lua腳本在運(yùn)行時(shí)報(bào)錯(cuò)织堂,可根據(jù)輸出的ID值判斷是哪個(gè)Lua腳本有錯(cuò)誤。