xlua-C#访问lua全局函数
using System.Collections;using System.Collections.Generic;using UnityEngine;using XLua;/** Author:W
* C#访问Lua中全局函数
*/publicclassCSharpCallLua:MonoBehaviour{privateLuaEnv luaEnv;// Use this for initializationvoid Start (){
luaEnv =newLuaEnv();
luaEnv.DoString("require 'CSharpCallLua'");//方式1:C#中定义委托来和Lua中全局函数建立映射Addadd= luaEnv.Global.Get<Add>("add");add(2,3);Add2 add2 = luaEnv.Global.Get<Add2>("add2");int res =add2(4,5);
Debug.Log("add2 res = "+res);Add3 add3 = luaEnv.Global.Get<Add3>("add3");int res2;int res3;int res4 =add3(6,8,out res2,out res3);
Debug.Log("add3 res4="+res4+" res2="+res2+" res3="+res3);
Debug.Log("==========================================");//方式2:使用xlua自带的LuaFunction函数建立映射,无需创建委托//缺点:慢,不推荐使用LuaFunction luaFunction = luaEnv.Global.Get<LuaFunction>("add3");object[] oArr = luaFunction.Call(2,6);foreach(object o in oArr){
Debug.Log(o);}}//针对无返回的delegatevoidAdd(int a,int b);//针对Lua中返回一个结果的delegateintAdd2(int a,int b);//针对Lua返回多个结果的 注意:out与ref都可以delegateintAdd3(int a,int b,outint res2,outint res3);privatevoidOnDestroy(){if(luaEnv !=null)
luaEnv.Dispose();}}lua脚本
function add(a,b)
print("Add")
end
function add2(a,b)return a+b
end
function add3(a,b)return a+b,a,b
end运行结果截图如下:
页:
[1]