2、映射到LuaFunction 这种方式的优缺点刚好和第一种相反。
使用也简单,LuaFunction上有个变参的Call函数,可以传任意类型,任意个数的参数,返回值是object的数组,对应于lua的多返回值。
四、使用建议
1、访问lua全局数据,特别是table以及function,代价比较大,建议尽量少做,比如在初始化时把要调用的lua function获取一次(映射到delegate)后,保存下来,后续直接调用该delegate即可。table也类似。
2、如果lua测的实现的部分都以delegate和interface的方式提供,使用方可以完全和xLua解耦:由一个专门的模块负责xlua的初始化以及delegate、interface的映射,然后把这些delegate和interface设置到要用到它们的地方。
private LuaEnv luaEnv;
void Start()
{
luaEnv = new LuaEnv();//全局唯一
luaEnv.AddLoader(CustomLoader);//添加自定义路径
luaEnv.DoString("require '007' ");//在自定义路径中查找007文件
//通过LuaFunction访问Lua中的全局方法
LuaFunction luaFunction = luaEnv.Global.Get<LuaFunction>("addreturn");//找到lua中的addreturn方法
object[] result = luaFunction.Call(10, 20);//通过Call关键字调用方法,