Unity熱更系列--C#訪問XLua的公共變量,方法等

如果你想讓你在編寫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);

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章