Example #1
0
    void Update()
    {
        if (Operation != null)
        {
            StackTime += Time.deltaTime;

            UI_Tools.Instance.ShowLoadingUI(Operation.progress);

            if (Operation.isDone == true)
            {
                CurrentState = NextState;
                ComplateLoad(CurrentState);

                Operation = null;
                NextState = eSceneType.SCENE_NONE;

                // Loding UI 삭제
                UI_Tools.Instance.HideUI(eUIType.PF_UI_LOADING, true);
            }
            else
            {
                return;
            }
        }

        if (CurrentState == eSceneType.SCENE_NONE)
        {
            return;
        }

        if (NextState != eSceneType.SCENE_NONE &&
            CurrentState != NextState)
        {
            DisableScene(CurrentState);

            if (IsAsyc)
            {            // 비동기 로드
                Operation = SceneManager.LoadSceneAsync(NextState.ToString("F"));
                StackTime = 0f;

                UI_Tools.Instance.ShowLoadingUI(0.0f);
            }
            else
            {
                SceneManager.LoadScene(NextState.ToString("F"));
                CurrentState = NextState;
                NextState    = eSceneType.SCENE_NONE;
                ComplateLoad(CurrentState);
            }
        }
    }
    public void UnloadScene(eSceneType eType)
    {
        if (false == IsLoadedScene(eType))
        {
            return;
        }

        SceneManager.UnloadSceneAsync(eType.ToString());
    }
    public void LoadScene(eSceneType eType, LoadSceneMode eMode = LoadSceneMode.Single, bool bIsUseFade = false, Action <SHReply> pCallback = null)
    {
        if (null == pCallback)
        {
            pCallback = (SHReply pReply) => { };
        }

        if (true == IsLoadedScene(eType))
        {
            pCallback(new SHReply(new SHError(eErrorCode.Scene_Already_Loaded, "[LSH] Aleady Loaded Scene")));
            return;
        }

        Action LoadScene = () =>
        {
            Single.Coroutine.CachingWait(() =>
            {
                SendEventToBeforeLoad(eType);
                Single.Coroutine.Async(SceneManager.LoadSceneAsync(eType.ToString(), eMode), (pAsync) =>
                {
                    if (true == bIsUseFade)
                    {
                        PlayFadeOut(() => pCallback(new SHReply()));
                    }
                    else
                    {
                        pCallback(new SHReply());
                    }

                    SendEventToAfterLoad(eType);
                });
            });
        };

        if (true == bIsUseFade)
        {
            PlayFadeIn(() => LoadScene());
        }
        else
        {
            LoadScene();
        }
    }
Example #4
0
 // 유틸 : 씬 로드 ( Change 방식 : GoTo 명령시 호출됨 )
 AsyncOperation LoadScene(eSceneType eType, Action <bool> pComplate)
 {
     return(SetLoadPostProcess(pComplate,
                               SceneManager.LoadSceneAsync(eType.ToString(), LoadSceneMode.Single)));
 }
 public bool IsLoadedScene(eSceneType eType)
 {
     return(SceneManager.GetSceneByName(eType.ToString()).isLoaded);
 }