如果你想讓你在編寫Lua的時候給你增加對Unity的代碼提示的話 請看:https://blog.csdn.net/FransicZhang/article/details/89483861
首先,你得在項目中加入XLua的環境
腳本中添加對Xlua的引用
using XLua;
然後創建一個XLua的虛擬機(解析器) 最好項目全局只有一個
LuaEnv luaenv = new LuaEnv();
1、我們先寫一個簡單的XLua測試看看能不能跑起來
LuaEnv luaenv = new LuaEnv();
luaenv.DoString("print('I am XLua')");
可以看出來 XLua的環境沒有問題。
2、我們創建一個HelloXLua.lua的文件 來使用C#訪問這個Lua文件 看能不能訪問出裏面的全局變量
--Lua腳本
a = 10
str = "Zhang"
IsDie = true
然後在C#中寫:
LuaEnv luaenv = new LuaEnv();
luaenv.DoString("require 'HelloXLua'");//固定寫法 傳入Lua文件名
int a = luaenv.Global.Get<int>("a");//獲取Lua的全局變量
string str = luaenv.Global.Get<string>("str");//獲取Lua的全局變量
bool IsDie = luaenv.Global.Get<bool>("IsDie");//獲取Lua的全局變量
print(a);
print(str);
print(IsDie);
可以看到我們已經成功的訪問到了Lua中的全局變量
3、我們來看怎麼運行Lua中的方法
(帶參沒有返回值)
--Lua腳本
function add(a, b)
print(a + b)
print("我被調用了")
end
//C#腳本
LuaEnv luaenv = new LuaEnv();
Add add = luaenv.Global.Get<Add>("add");
add(20, 60);//返回值方法 多個返回值
add = null;
//在外面定義一個委託
[CSharpCallLua]//標籤 固定寫法
delegate int Add(int a, int b);
可以看出來帶參數的方法也成功的調用
(帶參有返回值)
--Lua腳本
function add(a, b)
print(a + b)
print("我被調用了")
-- body
return a + b, a, b
end
參數使用 ref或者out
//C#腳本
Add add = luaenv.Global.Get<Add>("add");
int resa, resb;
int adsd = add(20, 60, out resa, out resb);//返回值方法 多個返回值
print(resa);
print(resb);
print("adsd--" + adsd);
//定義委託
[CSharpCallLua]
delegate int Add(int a, int b, out int resa, out int resb);