xlua - c#中LuaFunction转委托
为什么要将LuaFunction转为委托?
1、调用起来更方便
2、不需要关心忘记Dispose,造成c#端长时间持有lua层的引用而导致lua层对象无法释放问题
public T LuaFunToDelegate<T>(LuaEnv luaEnv, string luaStr) where T : Delegate { var results = luaEnv.DoString(luaStr); using (var luaFun = (LuaFunction)results[0]) { var d = luaFun.Cast<T>(); return d; } }
桥接代码生成配置加上Func<int, int, int>委托
[LuaCallCSharp] public static List<Type> LuaCallCSharpGenCfg = new List<Type>() { typeof(System.Func<int, int, int>), };
调用代码
public void Test(LuaEnv luaEnv) { string luaStr = $@" local addFun = function(a, b) return a + b end return addFun "; var addFun = LuaFunToDelegate<Func<int, int, int>>(luaEnv, luaStr); int result = addFun(2, 3); Debug.Log($"add result: {result}"); }

浙公网安备 33010602011771号