Unity+Lua互動篇
阿新 • • 發佈:2018-11-12
首先在我們偉大的GetHub上下載XLua框架。
今天就只發點基礎哈,畢竟第一次弄這個。。
本章主要說一些 Lua 的引用以及 C# 呼叫 Lua。
C#:
//執行字串 //其中 Dostring 函式返回值即為程式碼塊裡 return 語句的返回值 //luaEnv.DoString("print('a Hello World')"); //luaEnv.DoString("CS.UnityEngine.Debug.Log('Hello World')"); //載入 Lua 檔案 //需要注意的是因為 Resource 只支援有限的字尾,放 Resources 下 lua 檔案得加上 txt 字尾,如:byfile.lua.txt。 //luaEnv = new LuaEnv(); //luaEnv.DoString("require 'hjjTest'"); //TextAsset ta = Resources.Load<TextAsset>("hjjTest.lua"); //luaEnv.DoString("require 'hjjTest'"); //自定義 Loader //通過 Addloader 可以註冊個回撥,該回調引數是字串,返回一個 byte 陣列。lua 程式碼裡呼叫 require 時,引數就會傳給回撥。 //注意,require 返回一個由模組常量和函式組成的table。 //C# 訪問 Lua //訪問 lua 全域性資料,特別是 table 以及 function,代價比較大,建議儘量少做,比如在初始化時呼叫獲取一次後,儲存下來,後續直接使用即可。 //Action呼叫無返回值的函式 //Action act1 = luaEnv.Global.Get<Action>("fun_A_B"); //act1(); //Action呼叫多返回值的函式,out 傳出 lua 文件得到的值(return的值) int c = 0; int a = 1; int b = 2; Add add = luaEnv.Global.Get<Add>("fun_A_B1"); add(2, 3, 4, out a, out b, out c); } } [CSharpCallLua] delegate int AddFun(int a, int b, out int outa, out int outb); [CSharpCallLua] delegate void Add(int a1, int b1, int c1, out int a, out int b, out int c);
Lua檔案:
function fun_A_B()
print(1)
end
function fun_A_B1(a, b, c)
print(a,b,c)
c = a + b
print(c)
return a,c,b
end