🤔 Unity, huh, how?

🤔

Coroutines: Inactive objects

Coroutine couldn't be started because the the game object 'X' is inactive!

Coroutines can only be run on active GameObjects.

Resolution

Check that the GameObject is active before you start the coroutine

Use activeInHierarchy to check whether the GameObject is active. Don't use activeSelf, the GameObject's active state depends on the hierarchy.

if (gameObject.activeInHierarchy)
{
    StartCoroutine(MyCoroutine());
}

Or

Start the coroutine on another object that is active

Reference another component that is in an active hierarchy and start the coroutine on it instead.

_otherComponent.StartCoroutine(MyCoroutine());