private IEnumerator TransitionToCoroutine(Level level, Action beforeTransitionIn, Action onComplete) { _transitionController.FadeTo(Color.black, fadeTime); yield return(new WaitForSeconds(fadeTime)); _levelController.UnloadAll(); _levelController.LoadLevel(level); yield return(new WaitUntil(() => SceneManager.GetActiveScene().name == level.sceneName)); beforeTransitionIn?.Invoke(); _transitionController.FadeFrom(Color.black, fadeTime); yield return(new WaitForSeconds(fadeTime)); onComplete?.Invoke(); }