private static GamebaseCoroutineComponent GetCoroutineComponent(GamebaseGameObjectManager.GameObjectType gameObjectType, bool isMake = false)
        {
            GamebaseCoroutineComponent coroutineComponent = GamebaseComponentManager.GetComponent <GamebaseCoroutineComponent>(gameObjectType);

            if (null == coroutineComponent && true == isMake)
            {
                coroutineComponent = GamebaseComponentManager.AddComponent <GamebaseCoroutineComponent>(gameObjectType);
            }

            return(coroutineComponent);
        }
        public static void StopCoroutine(GamebaseGameObjectManager.GameObjectType gameObjectType, Coroutine routine)
        {
            GamebaseCoroutineComponent coroutineComponent = GetCoroutineComponent(gameObjectType);

            if (null == coroutineComponent)
            {
                return;
            }

            coroutineComponent.StopCoroutine(routine);
        }
        public static Coroutine StartCoroutine(GamebaseGameObjectManager.GameObjectType gameObjectType, IEnumerator routine)
        {
            GamebaseCoroutineComponent coroutineComponent = GetCoroutineComponent(gameObjectType, true);

            return(coroutineComponent.StartCoroutine(routine));
        }
        public static Coroutine StartCoroutine(GamebaseGameObjectManager.GameObjectType gameObjectType, string methodName)
        {
            GamebaseCoroutineComponent coroutineComponent = GetCoroutineComponent(gameObjectType, true);

            return(coroutineComponent.StartCoroutine(methodName));
        }
        public static Coroutine StartCoroutine(GamebaseGameObjectManager.GameObjectType gameObjectType, string methodName, [DefaultValue("null")] object value)
        {
            GamebaseCoroutineComponent coroutineComponent = GetCoroutineComponent(gameObjectType, true);

            return(coroutineComponent.StartCoroutine(methodName, value));
        }