/// <summary>
    /// When the fade in has completed, unload the selected level
    /// </summary>
    /// <param name="manager"></param>
    private void FadeInCompleted(BackgroundFadeManager manager)
    {
        backgroundFadeManager.FadeInComplete -= FadeInCompleted;

        SceneManager.sceneUnloaded += LevelUnLoaded;

        SceneManager.UnloadSceneAsync(currentSceneLoaded);
    }
    /// <summary>
    /// When the fade in has completed, unload the selected level
    /// </summary>
    /// <param name="manager"></param>
    private void FadeInCompleted(BackgroundFadeManager manager)
    {
        backgroundFadeManager.FadeInComplete -= FadeInCompleted;

        if (currentSceneLoaded != null && currentSceneLoaded.Length > 1)
        {
            SceneManager.sceneUnloaded += LevelUnLoaded;

            SceneManager.UnloadSceneAsync(currentSceneLoaded);
        }
        else
        {
            SceneManager.sceneLoaded += LevelLoaded;

            SceneManager.LoadSceneAsync(newSceneToLoad, LoadSceneMode.Additive);
        }
    }
    /// <summary>
    /// When the fader out has completed, let one of our levels know it can start
    /// </summary>
    /// <param name="manager"></param>
    private void FadeOutCompleted(BackgroundFadeManager manager)
    {
        backgroundFadeManager.FadeOutComplete -= FadeOutCompleted;

        TransitionComplete(this);
    }