/// <summary>
    /// シーン遷移
    /// </summary>
    /// <param name="sceneName"></param>
    /// <param name="autoFadeIn">遷移が完了したら自動でフェードを解除するか</param>
    /// <param name="showProgress">ローディングプログレスバーを表示するか</param>
    public void GoTo(string sceneName, bool autoFadeIn = true, bool showProgress = true)
    {
        _onSceneChangeStarted?.Invoke();

        if (_fade != null)
        {
            _fade.FadeOut(_fadeDuration, () =>
            {
                var asyncOperation = SceneManager.LoadSceneAsync(sceneName);

                if (showProgress)
                {
                    StartCoroutine(DoShowLoadingProgress(asyncOperation, () => { if (autoFadeIn)
                                                                                 {
                                                                                     _fade.FadeIn(_fadeDuration);
                                                                                 }
                                                         }));
                }
                else
                {
                    asyncOperation.completed += (x) => { if (autoFadeIn)
                                                         {
                                                             _fade.FadeIn(_fadeDuration);
                                                         }
                    };
                }
            });
        }
        else
        {
            SceneManager.LoadScene(sceneName);
        }
    }