private IEnumerator HandleLoadingScreen(LoadingScreenProgressToken token)
    {
        MusicManager.Instance.LoadingScreenTransitionEffect(transitionInDuration, true);
        float timer = 0f;

        while (timer < transitionInDuration)
        {
            SetOpacities(timer / transitionInDuration);

            timer += Time.unscaledDeltaTime;
            yield return(null);
        }

        SetOpacities(1f);

        yield return(new WaitForSecondsRealtime(transitionMainDuration * .5f));

        token.ScreenFullyShown = true;
        yield return(new WaitForSecondsRealtime(transitionMainDuration * .5f));

        token.TransitionComplete = true;

        MusicManager.Instance.LoadingScreenTransitionEffect(transitionOutDuration, false);
        timer = 0f;
        while (timer < transitionOutDuration)
        {
            SetOpacities(1f - timer / transitionInDuration);

            timer += Time.unscaledDeltaTime;
            yield return(null);
        }

        SetOpacities(0f);
        token.LoadingScreenGone = true;
    }
 public static void ShowLoadingScreen(LoadingScreenProgressToken token)
 {
     Instance.StartCoroutine(Instance.HandleLoadingScreen(token));
     Instance.StartCoroutine(Instance.TextMover());
 }