{ //Lua脚本 可使用前面两篇写的获取lua脚本 private string script = @" --函数 function luaFunc(num) return num + 1 end --声明表格 test = {} --表格里面添加字段,值是一个函数 把上面的方法放到这个表里面去 test.luaFunc = luaFunc "; //要获取的Lua方法对象 LuaFunction luaFunc = null; //Lua状态对象 LuaState lua = null; void Start () { //实例化状态对象 lua = new LuaState(); //启动 lua.Start(); lua.DoString(script); //通过字符串从lua脚本里面获取到方法 luaFunc = lua.GetFunction("test.luaFunc"); if (luaFunc != null) { //格式 luaFunc.Invoke<参数类型,返回值类型>(参数);跟Func类型的委托yiyang int num = luaFunc.Invoke<int, int>(123456); Debugger.Log("generic call return: {0}", num); //2、原生执行步骤 具体请查看源码 num = CallFunc(); Debugger.Log("expansion call return: {0}", num); //3、用委托的方式将luaFunc转化成一个委托duixiang //将方法转化成一个委托 Func<int, int> Func = luaFunc.ToDelegate<Func<int, int>>(); //执行委托 num = Func(123456); Debugger.Log("Delegate call return: {0}", num); //4、直接用luaState对象去执行函数 //书写格式 参数类型 返回值 函数名称 参数 随便 num = lua.Invoke<int, int>("test.luaFunc", 123456, true); Debugger.Log("luastate call return: {0}", num); } } }
脚本功能,获取并执行在lua脚本里面的函数方法
重点说明
函数获取
LuaFunction fun = lua.GetFunction("函数名字"); 通过函数的名字直接获取到函数
执行函数
fun .Invoke<参数数据类型, 返回值数据类型>(参数); 可有多个参数
Func<int, int> Func = fun.ToDelegate<Func<int, int>>();转化成委托再执行
lua.Invoke<int, int>("lua脚本里面的函数名字", 参数, true);直接用lua状态进行执行
热更新_ToLua学习示例 03_CallLuaFunction
于 2023-04-02 11:09:34 首次发布
文章介绍了如何在C#中使用Lua脚本,通过LuaState对象获取Lua函数,如lua.GetFunction(),然后执行这些函数,包括直接调用、转化为委托调用以及通过lua.Invoke()方法调用。同时展示了函数的参数和返回值类型处理。
摘要由CSDN通过智能技术生成