static public Delegate Create(LuaFunction func, LuaTable self) { #if UNITY_EDITOR if (_Create == null) { throw new LuaException(string.Format("Delegate {0} not register", TypeTraits <T> .GetTypeName())); } #endif if (func != null) { LuaState state = func.GetLuaState(); LuaDelegate target = state.GetLuaDelegate(func, self); if (target != null) { return(Delegate.CreateDelegate(typeof(T), target, target.method)); } else { Delegate d = _Create(func, self, true); target = d.Target as LuaDelegate; state.AddLuaDelegate(target, func, self); return(d); } } return(_Create(null, null, true)); }
static public Delegate Create(LuaFunction func) { if (func != null) { LuaState luaState = func.GetLuaState(); // 是否有保存 LuaDelegate luaDelegate = luaState.GetLuaDelegate(func); if (luaDelegate != null) { return(Delegate.CreateDelegate(typeof(T), luaDelegate, luaDelegate.method)); } Delegate d = _Create(func, null, false); luaDelegate = d.Target as LuaDelegate; luaDelegate.method = d.Method; luaState.AddLuaDelegate(luaDelegate, func); return(d); } return(_Create(null, null, false)); }