/// <summary> /// GameEventArgs 事件注册 /// </summary> /// <param name="self"></param> /// <param name="handle"></param> /// <typeparam name="T"></typeparam> public static void GameEventSubscribe <T>(this EventComponent self, EventHandler <GameEventArgs> handle) where T : GameEventArgs, new() { var args = ReferencePool.Acquire <T>(); self.Subscribe(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 GameEventSubscribe(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.Subscribe(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 GameEventSubscribe(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.Subscribe(args.Id, handle); } else { GameFrameworkLog.Error($"事件ID:{args.Id},已存在相同的处理函数,无法继续注册."); } ReferencePool.Release(args); }