From bf2883ce74443cdf30ad6870ac746add9ad967be Mon Sep 17 00:00:00 2001 From: "aube.lee" Date: Thu, 13 Feb 2025 23:07:59 +0900 Subject: [PATCH] =?UTF-8?q?feat:=20=EC=8A=A4=ED=85=8C=EC=9D=B4=EC=A7=80=20?= =?UTF-8?q?=EC=A7=84=EC=9E=85=20=EC=8A=A4=ED=81=AC=EB=A6=BD=ED=8A=B8=20?= =?UTF-8?q?=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Gameton/Scripts/GameStage/StageManager.cs | 6 ++- .../Gameton/Scripts/Scenes/StageScene.cs | 51 +++++++++++++++++++ .../Gameton/Scripts/Scenes/StageScene.cs.meta | 11 ++++ 3 files changed, 66 insertions(+), 2 deletions(-) create mode 100644 Gameton-06/Assets/Gameton/Scripts/Scenes/StageScene.cs create mode 100644 Gameton-06/Assets/Gameton/Scripts/Scenes/StageScene.cs.meta diff --git a/Gameton-06/Assets/Gameton/Scripts/GameStage/StageManager.cs b/Gameton-06/Assets/Gameton/Scripts/GameStage/StageManager.cs index 04ec05a4..37242fb7 100644 --- a/Gameton-06/Assets/Gameton/Scripts/GameStage/StageManager.cs +++ b/Gameton-06/Assets/Gameton/Scripts/GameStage/StageManager.cs @@ -10,6 +10,7 @@ namespace TON public List stageClearDatas { get; private set; } private float stageStartTime; // 스테이지 시작 시간 + private string stageId; // 스테이지 아이디 public void Initialize() { @@ -34,9 +35,10 @@ namespace TON Initialize(); } - public void StartStage() + public void StartStage(string stageId) { stageStartTime = Time.time; + this.stageId = stageId; } public int GetStarCount(float elapsedTime) @@ -49,7 +51,7 @@ namespace TON return 1; } - public void StageClear(string characterId, string stageId) + public void StageClear(string characterId) { float clearTime = Time.time - stageStartTime; int starCount = GetStarCount(clearTime); diff --git a/Gameton-06/Assets/Gameton/Scripts/Scenes/StageScene.cs b/Gameton-06/Assets/Gameton/Scripts/Scenes/StageScene.cs new file mode 100644 index 00000000..bb4f68ac --- /dev/null +++ b/Gameton-06/Assets/Gameton/Scripts/Scenes/StageScene.cs @@ -0,0 +1,51 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; +using UnityEngine.Assertions; +using UnityEngine.SceneManagement; + +namespace TON +{ + public class StageScene : SceneBase + { + + public override IEnumerator OnStart() + { + // Ingame 씬을 비동기로 로드한다. + AsyncOperation asyncLoad = SceneManager.LoadSceneAsync("Ingame", LoadSceneMode.Single); + + // 로드가 완료될 때 까지 yield return null 을 하면서 기다린다 + while (!asyncLoad.isDone) + { + yield return null; + } + + UIManager.Show(UIList.IngameUI); + UIManager.Show(UIList.IngameOptionUI); + UIManager.Show(UIList.ControllerUI); + + // 선택된 캐릭터에 맞는 오브젝트를 생성하거나 적용하는 코드 작성 + PlayerSpawner.SpawnPlayerCharacter(); + + // 진입한 스테이지 아이디를 불러온다 + string stageId = PlayerPrefs.GetString("StageId", null); + Assert.IsNotNull(stageId, "StageScene:: 스테이지 진입 실패!"); + StageManager.Singleton.StartStage(stageId); + } + public override IEnumerator OnEnd() + { + yield return null; + + UIManager.Hide(UIList.IngameUI); + UIManager.Hide(UIList.IngameOptionUI); + UIManager.Hide(UIList.ControllerUI); + } + + void OnEscapeExecute() + { + // TODO : 게임 일시정지 UI 노출 시 수행 + // Time.timeScale = 0f; + // UIManager.Show(UIList.PausePopupUI); + } + } +} diff --git a/Gameton-06/Assets/Gameton/Scripts/Scenes/StageScene.cs.meta b/Gameton-06/Assets/Gameton/Scripts/Scenes/StageScene.cs.meta new file mode 100644 index 00000000..5d53e3f1 --- /dev/null +++ b/Gameton-06/Assets/Gameton/Scripts/Scenes/StageScene.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 9bd7e55ed83dc3c4882fc6bd4c5c516d +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: