IEnumerator SwitchSene(SceneComponent sceneExit, SceneComponent sceneEnter)
 {
     if (sceneExit != null)
     {
         bool closed = false;
         UnityEngine.Events.UnityAction wait = () => {
             closed = true;
         };
         transitionScreen.OnTransitionComplete.AddListener(wait);
         //シーンの終了処理を行う
         sceneExit.ExitScne();
         //画面をフェードアウトさせる
         transitionScreen.Close(sceneExit.FadeoutColor, sceneExit.FadeoutDuration);
         //フェード完了までまつ
         while (!closed)
         {
             yield return(null);
         }
         transitionScreen.OnTransitionComplete.RemoveListener(wait);
         //フェード完了後処理をする
         sceneExit.OnCompleteExit();
         sceneExit.gameObject.SetActive(false);
     }
     if (sceneEnter != null)
     {
         bool closed = true;
         UnityEngine.Events.UnityAction wait = () => {
             closed = false;
         };
         sceneEnter.gameObject.SetActive(true);
         transitionScreen.OnTransitionComplete.AddListener(wait);
         //シーンの開始処理をする
         sceneEnter.EntertScene();
         //画面をフェードインさせる
         transitionScreen.Open(sceneEnter.FadeinColor, sceneEnter.FadeinDuration);
         //フェードインをまつ
         while (closed)
         {
             yield return(null);
         }
         transitionScreen.OnTransitionComplete.RemoveListener(wait);
     }
 }