/// <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);
        }