diff --git a/Gameton-06/Assets/Gameton/Scripts/Scenes/StageScene.cs b/Gameton-06/Assets/Gameton/Scripts/Scenes/StageScene.cs index 1e406e7b..10311e7f 100644 --- a/Gameton-06/Assets/Gameton/Scripts/Scenes/StageScene.cs +++ b/Gameton-06/Assets/Gameton/Scripts/Scenes/StageScene.cs @@ -11,11 +11,32 @@ namespace TON public override IEnumerator OnStart() { - // Ingame 씬을 비동기로 로드한다. - AsyncOperation asyncLoad = SceneManager.LoadSceneAsync("Ingame", LoadSceneMode.Single); + string stageId = PlayerPrefs.GetString("StageId", null); + Assert.IsNotNull(stageId, "StageScene:: 스테이지 진입 실패!"); + + // 선택한 스테이지에 맞는 씬을 로드한다 + AsyncOperation asyncLoad = null; + switch (stageId) + { + case "STG001": + asyncLoad = SceneManager.LoadSceneAsync("Stage 1", LoadSceneMode.Single); + break; + case "STG002": + asyncLoad = SceneManager.LoadSceneAsync("Stage 2", LoadSceneMode.Single); + break; + case "STG003": + asyncLoad = SceneManager.LoadSceneAsync("Stage 3", LoadSceneMode.Single); + break; + case "STG004": + asyncLoad = SceneManager.LoadSceneAsync("Stage 4", LoadSceneMode.Single); + break; + default: + Assert.IsTrue(false, "StageScene:: 스테이지 진입 실패!"); + break; + } // 로드가 완료될 때 까지 yield return null 을 하면서 기다린다 - while (!asyncLoad.isDone) + while (asyncLoad != null && !asyncLoad.isDone) { yield return null; } @@ -27,9 +48,6 @@ namespace TON // 선택된 캐릭터에 맞는 오브젝트를 생성하거나 적용하는 코드 작성 PlayerSpawner.SpawnPlayerCharacter(); - // 진입한 스테이지 아이디를 불러온다 - string stageId = PlayerPrefs.GetString("StageId", null); - Assert.IsNotNull(stageId, "StageScene:: 스테이지 진입 실패!"); StageManager.Singleton.StartStage(stageId); } public override IEnumerator OnEnd()