public void TransitionScene(int sceneId) { SceneBase scene; // 表示するシーン if (sceneId > -1) { scene = scenes [sceneId]; } else { // Debug.LogError ("error sceneId: "+sceneId); // オープンしているシーンを閉じる。 ClearScene(); return; } if (currentScene == scene) { return; } // OpenScene(シーンが開始した時)にnextSceneはnullになる。 // CloseScene でシーン終了後に nextScene がオープンする。 nextScene = scene; if (eventTransition != null) { eventTransition(scene, TransitionType.SET_SCENE); } if (closeTransitionScene != null) { // 終了処理中の時 Debug.LogWarning(closeTransitionScene + ">>>>>> 終了処理 中断"); closeTransitionScene.eventCloseComplete -= SceneCloseComplete; closeTransitionScene.eventCloseTransitionInterruptComplete += SceneCloseTransitionInterruptComplete; closeTransitionScene.CloseTransitionInterrupt(); return; } if (openTransitionScene != null) { // 開始処理の時 Debug.LogWarning(openTransitionScene + ">>>>>> 開始処理 中断"); openTransitionScene.eventOpenComplete -= SceneOpenComplete; openTransitionScene.eventOpenTransitionInterruptComplete += SceneOpenTransitionInterruptComplete; openTransitionScene.OpenTransitionInterrupt(); return; } // 次のシーンを開く。現在開いているシーンがあれば閉じる。 OpenNextScene(); }