private string luaString = @" function testFunc(num) return num*2 end t = {} t.testFunc = testFunc "; private LuaFunction luaFunc; void Start () { LuaState lua = new LuaState(); lua.Start (); lua.DoString (luaString); luaFunc = lua.GetFunction ("testFunc"); DelegateFactory.Init ();//委托工厂初始化 Func<int,int> funcDel = luaFunc.ToDelegate<Func<int,int>> (); int s3 = funcDel(8888888); Debug.Log (s3); //释放资源 }
lua方法转成c#委托,要先调用DelegateFactory.Init()方法初始化,没有调用时会报错
使用LuaFunction的ToDelegate方法转换,泛型参数表示要转换的委托类型
这里委托类型用的是内置的Func有返回值,lua代码中的参数返回的是数值类型,我说了可以用string来接,但是这里不行,就算是把lua方法的返回值改成string类型,同样不行,就是说不能用Func<...,string>接收委托,不明所以