/// <summary> /// GameEventArgs 事件释放 /// </summary> /// <param name="self"></param> /// <param name="handle"></param> /// <typeparam name="T"></typeparam> public static void GameEventUnsubscribe <T>(this EventComponent self, EventHandler <GameEventArgs> handle) where T : GameEventArgs, new() { var args = ReferencePool.Acquire <T>(); self.Unsubscribe(args.Id, handle); ReferencePool.Release(args); }
/// <summary> /// GameEventArgs 事件释放 /// </summary> /// <param name="self"></param> /// <param name="gameEventArgsType"></param> /// <param name="handle"></param> /// <exception cref="GameFrameworkException"></exception> public static void GameEventUnsubscribe(this EventComponent self, Type gameEventArgsType, EventHandler <GameEventArgs> handle) { if (!typeof(GameEventArgs).IsAssignableFrom(gameEventArgsType)) { throw new GameFrameworkException($"gameEventArgsType 不是 {typeof(GameEventArgs)} 类型"); } var args = (GameEventArgs)ReferencePool.Acquire(gameEventArgsType); self.Unsubscribe(args.Id, handle); ReferencePool.Release(args); }
/// <summary> /// GameEventArgs 事件释放 /// </summary> /// <param name="self"></param> /// <param name="gameEventArgsType"></param> /// <param name="handle"></param> /// <exception cref="GameFrameworkException"></exception> public static void GameEventUnsubscribe(this EventComponent self, Type gameEventArgsType, EventHandler <GameEventArgs> handle) { if (!typeof(GameEventArgs).IsAssignableFrom(gameEventArgsType)) { throw new GameFrameworkException($"gameEventArgsType 不是 {typeof(GameEventArgs)} 类型"); } var args = (GameEventArgs)ReferencePool.Acquire(gameEventArgsType); if (self.Check(args.Id, handle)) { self.Unsubscribe(args.Id, handle); } else { GameFrameworkLog.Warning($"事件ID:{args.Id},已经被释放了,无法再次释放."); } ReferencePool.Release(args); }