void Update() { if (m_loadSceneState != null && m_loadState != eSceneState.None) { if (m_loadSceneState.isDone) { m_loadSceneState = null; m_state = m_loadState; m_loadState = eSceneState.None; m_progressLabel = "100"; } else { m_progressLabel = ((int)(m_loadSceneState.progress * 100)).ToString(); } } else { //씬이 로드중이 아니라면 if (Input.GetKeyDown(KeyCode.Escape)) { //닫힐 팝업이 없다면 if (!PopupManager.Instance.CanClosePopup(KeyCode.Escape)) { switch (m_state) { case eSceneState.Title: PopupManager.Instance.OpenPopupOkCancel("[0000FF]Notice[-]", "게임을 종료하시겠습니까?", () => { #if UNITY_EDITOR SoundManager.Instance.PlaySfx(SoundManager.eAudioSFXClip.ButtonClick); EditorApplication.isPlaying = false; #else SoundManager.Instance.PlaySfx(SoundManager.eAudioSFXClip.ButtonClick); Application.Quit(); #endif }, () => { SoundManager.Instance.PlaySfx(SoundManager.eAudioSFXClip.ButtonClick); }, "예", "아니오"); break; case eSceneState.Lobby: PopupManager.Instance.OpenPopupOkCancel("[0000FF]Notice[-]", "타이틀 화면으로 돌아가시겠습니까?", () => { SoundManager.Instance.PlaySfx(SoundManager.eAudioSFXClip.ButtonClick); LoadSceneAsync(eSceneState.Title); PopupManager.Instance.ClosePopup(); }, () => { SoundManager.Instance.PlaySfx(SoundManager.eAudioSFXClip.ButtonClick); }, "예", "아니오"); break; case eSceneState.Game: PopupManager.Instance.OpenPopupOkCancel("[0000FF]Notice[-]", "로비 화면으로 돌아가시겠습니까?", () => { SoundManager.Instance.PlaySfx(SoundManager.eAudioSFXClip.ButtonClick); LoadSceneAsync(eSceneState.Lobby); Time.timeScale = 1; PopupManager.Instance.ClosePopup(); }, () => { SoundManager.Instance.PlaySfx(SoundManager.eAudioSFXClip.ButtonClick); }, "예", "아니오"); break; } } } } }
public void OnCacheReset() { //m_Scene = null; m_SceneState = eSceneState.UnInit; m_OpenCallback = null; }
// Update is called once per frame void Update() { if (m_loadSceneState != null) { if (m_loadSceneState.isDone) { m_state = m_loadState; m_loadState = eSceneState.None; m_loadSceneState = null; m_loadingBar.value = 1f; m_loadingObj.SetActive(false); PopupManager.Instance.ClearPopup(); } else { // Debug.Log((int)(m_sceneLoadState.progress * 100)); DebugString.Log((int)(m_loadSceneState.progress * 100)); m_loadingBar.value = m_loadSceneState.progress; } } if (Input.GetKeyDown(KeyCode.Escape)) { if (PopupManager.Instance.IsOpenPopup()) { PopupManager.Instance.ClosePopup(); } else { switch (m_state) { case eSceneState.Title: PopupManager.Instance.OpenPopupOkCancel("[000000]Notice[-]", "[000000]게임을 종료하시겠습니까?[-]", () => { #if UNITY_EDITOR UnityEditor.EditorApplication.isPlaying = false; #else Application.Quit(); #endif }, null, "예", "아니오"); break; case eSceneState.Lobby: PopupManager.Instance.OpenPopupOkCancel("[000000]Notice[-]", "[000000]타이틀 화면으로 돌아가시겠습니까?[-]", () => { LoadSceneAsync(eSceneState.Title); }, null, "예", "아니오"); break; case eSceneState.Game: PopupManager.Instance.OpenPopupOkCancel("[000000]Notice[-]", "[000000]로비 화면으로 돌아가시겠습니까?[-]", () => { LoadSceneAsync(eSceneState.Lobby); }, null, "예", "아니오"); break; } } } }
public void SetState(eSceneState state) { if (state == eSceneState.Completed && State != eSceneState.Completed) { AudioManger.PlayEvent("SceneComplete"); } State = state; }
public void LoadSceneAsync(eSceneState state) { //load를 하고 있다면 if (m_loadState != eSceneState.None) { return; } SoundManager.Instance.PlaySfx(SoundManager.eAudioSFXClip.NextScene); m_loadState = state; ///m_loadingBgSpr.enabled = true; m_loadSceneState = SceneManager.LoadSceneAsync(state.ToString()); }
public void LoadSceneAsync(eSceneState sceneState) { if (m_loadState != eSceneState.None) { return; } m_loadState = sceneState; m_loadSceneState = SceneManager.LoadSceneAsync(sceneState.ToString()); if (m_loadingObj != null) { m_loadingObj.SetActive(true); m_loadingBar.value = 0f; } }
public void LoadSceneRes() { if (m_SceneState != eSceneState.UnInit) { return; } m_SceneState = eSceneState.Loading; SceneData data = SceneDataTable.Get(m_SceneID); if (data == null) { return; } if (data.loadStrategy == SceneLoadStatgy.Addressable) { AddressableResMgr.S.LoadSceneAsync(data.fullPath, (sceneInstance) => { if (m_OpenCallback != null) { m_OpenCallback.Invoke(); } }, data.loadSceneMode); } else { SceneManager.LoadSceneAsync(data.fullPath, data.loadSceneMode).completed += (handle) => { if (m_OpenCallback != null) { m_OpenCallback.Invoke(); } }; } }
public void StartPlayScene(string unloadScene = "") { _currentScene = eSceneState.Play; StartCoroutine(LoadingScene(unloadScene, "InGameScene")); SoundManager._instance.PlayBGMSound(SoundManager.eBGMType.PLAY1); }
public void StartLobbyScene(string unloadScene = "") { _currentScene = eSceneState.Lobby; StartCoroutine(LoadingScene(unloadScene, "LobbyScene")); SoundManager._instance.PlayBGMSound(SoundManager.eBGMType.LOOBY); }
private void ChangeScene(eSceneState sceneState) { //콘솔창 메세지 색깔 바꾸기 Debug.LogFormat("<color=red>{0}</color>", sceneState); switch (sceneState) { case eSceneState.App: break; case eSceneState.Title: { //LoadSceneAsync를 사용하면 Title의 OnEnable다음(start전)에서 넘어감 //로딩 중간에 음악이나 애니메이션 실행가능 AsyncOperation oper = SceneManager.LoadSceneAsync(sceneState.ToString()); oper.completed += (oa) => { Debug.Log("title로 넘어갑니다~~~~~"); Title title = GameObject.FindObjectOfType <Title>(); title.Init(); title.onClickGameStart = () => //게임 스타트가 완료되면 { Debug.Log("start"); this.ChangeScene(eSceneState.InGame); //changeScene을 실행시켜 }; }; //sceneLoaded를 쓰면 먼저 넘어가고 Title의 Awake부터 호출 //로딩 다할때까지 아무것도 재생 안됨 //SceneManager.sceneLoaded += (Scene argo0, LoadSceneMode arg1) => //{ // Title title = GameObject.FindObjectOfType<Title>(); // Debug.Log("title로 넘어갑니다~~~~~`"); // title.onClickGameStart = () => //게임 스타트가 완료되면 // { // Debug.Log("start"); // this.ChangeScene(eSceneState.InGame); //changeScene을 실행시켜 // }; // title.Init(); //}; //SceneManager.LoadScene(sceneState.ToString()); //Title씬으로 넘어가기 } break; case eSceneState.InGame: { AsyncOperation oper = SceneManager.LoadSceneAsync(sceneState.ToString()); oper.completed += (oa) => { Debug.Log("InGame로 넘어갑니다~~~~~"); InGame inGame = GameObject.FindObjectOfType <InGame>(); inGame.Init(); }; } break; } }
public void StartPlayScene2(string unloadScene = "") { currentStage = 2; _currentScene = eSceneState.Play; StartCoroutine(LoadingScene(unloadScene, "Stage2")); }
public void StartLobbyScene(string unloadScene = "") { _currentScene = eSceneState.Lobby; StartCoroutine(LoadingScene(unloadScene, "LobbyScene")); }
public void SetState(eSceneState state) { m_state = state; }
IEnumerator WaitChangeScene(eSceneState _before, eSceneState _after) { m_SceneChanging = true; if (_before == eSceneState.AdventureInMap && _after == eSceneState.AdventureInHunt) { InStartFadeAnim(Img_FadeBlack_Adventure); } else { InStartFadeAnim(Img_FadeBlack); } yield return(new WaitForSeconds(2f)); if (_before == eSceneState.Title && _after == eSceneState.Main) { SceneManager.UnloadSceneAsync("TitleScene"); SceneManager.LoadScene("MainScene", LoadSceneMode.Additive); SceneManager.LoadScene("GoodsScene", LoadSceneMode.Additive); // 튜토리얼 체크 if (TutorialStorySystem.Instance != null && MainController.Instance != null) { if (MainController.Instance.UserInfo.GetTutorialStoryClear(eStoryState.FirstStart) == false) { TutorialStorySystem.Instance.StartSpeach(eStoryState.FirstStart); } } } if (_before == eSceneState.Main) { if (_after == eSceneState.AdventureInMap) { SceneManager.UnloadSceneAsync("MainScene"); SceneManager.LoadScene("AdventureScene", LoadSceneMode.Additive); SceneManager.LoadScene("AdventureModeInMapScene", LoadSceneMode.Additive); } else if (_after == eSceneState.Title) { // 임시로 재시작 하는 것 처럼 보임 //SceneManager.UnloadSceneAsync("GoodsScene"); //SceneManager.UnloadSceneAsync("MainScene"); SceneManager.LoadScene("TitleScene"); } } if (_before == eSceneState.AdventureInMap) { if (_after == eSceneState.AdventureInHunt) { SceneManager.UnloadSceneAsync("AdventureModeInMapScene"); SceneManager.LoadScene("AdventureModeInHuntScene", LoadSceneMode.Additive); } else if (_after == eSceneState.AdventureInBoss) { SceneManager.UnloadSceneAsync("AdventureModeInMapScene"); SceneManager.UnloadSceneAsync("AdventureScene"); SceneManager.LoadScene("AdventureModeInBossScene", LoadSceneMode.Additive); } else if (_after == eSceneState.Main) { SceneManager.UnloadSceneAsync("AdventureModeInMapScene"); SceneManager.UnloadSceneAsync("AdventureScene"); SceneManager.LoadScene("MainScene", LoadSceneMode.Additive); } } if (_before == eSceneState.AdventureInHunt && _after == eSceneState.Main) { SceneManager.UnloadSceneAsync("AdventureScene"); SceneManager.UnloadSceneAsync("AdventureModeInHuntScene"); SceneManager.LoadScene("MainScene", LoadSceneMode.Additive); } if (_before == eSceneState.AdventureInBoss && _after == eSceneState.Main) { SceneManager.UnloadSceneAsync("AdventureModeInBossScene"); SceneManager.LoadScene("MainScene", LoadSceneMode.Additive); } yield return(new WaitForSeconds(1f)); m_Scenestate = _after; if (GoodsSceneInstance.Instance != null) { GoodsSceneInstance.Instance.ChangeButtonState(); } if (_before == eSceneState.AdventureInMap && _after == eSceneState.AdventureInHunt) { OutStartFadeAnim(Img_FadeBlack_Adventure); } else { OutStartFadeAnim(Img_FadeBlack); } yield return(new WaitForSeconds(1f)); m_SceneChanging = false; }
public void ChangeScene(eSceneState _before, eSceneState _after) { StartCoroutine(WaitChangeScene(_before, _after)); }