Exemple #1
0
    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;
                    }
                }
            }
        }
    }
Exemple #2
0
        public void OnCacheReset()
        {
            //m_Scene = null;
            m_SceneState = eSceneState.UnInit;

            m_OpenCallback = null;
        }
Exemple #3
0
    // 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;
    }
Exemple #5
0
    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());
    }
Exemple #6
0
    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;
        }
    }
Exemple #7
0
        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();
                    }
                };
            }
        }
Exemple #8
0
 public void StartPlayScene(string unloadScene = "")
 {
     _currentScene = eSceneState.Play;
     StartCoroutine(LoadingScene(unloadScene, "InGameScene"));
     SoundManager._instance.PlayBGMSound(SoundManager.eBGMType.PLAY1);
 }
Exemple #9
0
 public void StartLobbyScene(string unloadScene = "")
 {
     _currentScene = eSceneState.Lobby;
     StartCoroutine(LoadingScene(unloadScene, "LobbyScene"));
     SoundManager._instance.PlayBGMSound(SoundManager.eBGMType.LOOBY);
 }
Exemple #10
0
    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;
        }
    }
Exemple #11
0
 public void StartPlayScene2(string unloadScene = "")
 {
     currentStage  = 2;
     _currentScene = eSceneState.Play;
     StartCoroutine(LoadingScene(unloadScene, "Stage2"));
 }
Exemple #12
0
 public void StartLobbyScene(string unloadScene = "")
 {
     _currentScene = eSceneState.Lobby;
     StartCoroutine(LoadingScene(unloadScene, "LobbyScene"));
 }
Exemple #13
0
 public void SetState(eSceneState state)
 {
     m_state = state;
 }
Exemple #14
0
    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;
    }
Exemple #15
0
 public void ChangeScene(eSceneState _before, eSceneState _after)
 {
     StartCoroutine(WaitChangeScene(_before, _after));
 }