SceneLoadObject GetNextSceneLoadObject(eSceneName nextScene)
 {
     if (_dic.ContainsKey(nextScene))
     {
         return(_dic[nextScene]);
     }
     return(null);
 }
 public void SceneLoad(eSceneName sceneName)
 {
     //새로운 씬을 불러오게 될 경우는 전투씬이거나 기존의 화면을 아얘 지운다고 가정
     //이전에 만들어진 UI프리팹은 일단 지운다.
     UIManager._Instance.ContentPopupAllDestroy();
     _isSceneLoadComplete = false;
     StartCoroutine(LoadingSceneLoad(GetPrvSceneName(), sceneName));
 }
Beispiel #3
0
    //<summary>
    //function : 加载新场景
    //<summary>
    public static void LoadLevel(eSceneName _scene)
    {
        //加载下一个场景
        g_CurSceneInfo = g_dicNextSceneInfo[_scene];

        //加载切换场景.
        UnityEngine.SceneManagement.SceneManager.LoadSceneAsync
            ("MapLoading");
    }
    IEnumerator LoadingSceneLoad(eSceneName prvSceneName, eSceneName nextScene)
    {
        //로드할 오브젝트가 있는 씬마다 있는 로드객체 클래스
        SceneLoadObject loadObj = GetNextSceneLoadObject(nextScene);

        //로딩씬에서 모든 로드를 진행한다.
        yield return(SceneManager.LoadSceneAsync(eSceneName.Loading.ToString(), LoadSceneMode.Additive));

        //동적 타입으로 지정된 에셋번들을 언로드 처리
        AssetBundleManager.Instance.DynamicBundleUnload();
        //이전 씬 언로드
        yield return(SceneManager.UnloadSceneAsync(prvSceneName.ToString()));

        yield return(loadObj != null?loadObj.CorouctineLoadPrefab() : null);

        //로딩 게이지 업데이트
        ProgressUpdate(0.5f);


        SceneManager.sceneLoaded += OnSceneLoaded;
        AsyncOperation nextSceneOper = SceneManager.LoadSceneAsync(nextScene.ToString(), LoadSceneMode.Additive);

        //진행도 업데이트
        while (nextSceneOper.isDone != true)
        {
            yield return(waitSec);

            ProgressUpdate(0.5f + (nextSceneOper.progress * 0.5f));
        }

        yield return(SceneManager.UnloadSceneAsync(eSceneName.Loading.ToString()));


        yield return(new WaitForSeconds(0.5f));;

        if (_isSceneLoadComplete)
        {
            OnLoadingComplete?.Invoke();
            StopAllCoroutines();
        }
    }