Exemplo n.º 1
0
    IEnumerator LoadScene()
    {
        //m_ClipSlider.SetNextProgress(0.9f);
        LabelLoadingProgressNum1.text = "90%";
        LabelLoadingProgressNum2.text = "90%";
        SliderLoading1.value          = 0.9f;


        BundleManager.ReleaseSingleBundle();
        BundleManager.CleanBundleLoadQueue();
        BundleManager.ReleaseUIRefBundle();
        BundleManager.DoUnloadUnuseBundle();
        Obj_Character.s_hasPlayedBornEffectObjIdList.Clear();

        if (null != m_lastSceneBundle)
        {
            m_lastSceneBundle.Unload(false);
            m_lastSceneBundle = null;
        }
        ResourcesManager.Instance.UnLoadAll();
        BundleManager.ReleaseUIGroupBundle();
        if (nextSceneID != (int)Games.GlobeDefine.GameDefine_Globe.SCENE_DEFINE.SCENE_LOGIN)
        {
            BundleManager.ReleaseLoginBundle();
            LogModule.ErrorLog("Resources.UnloadUnusedAssets");
            yield return(Resources.UnloadUnusedAssets());

            System.GC.Collect();
            yield return(StartCoroutine(BundleManager.LoadMainUI()));

            yield return(StartCoroutine(BundleManager.LoadUI(UIInfo.JoyStickRoot, null, null, null)));

            DamageBoardManager.PreloadDamageBoard();
        }
        else
        {
            BundleManager.ReleaseGroupBundle();
            LogModule.ErrorLog("Resources.UnloadUnusedAssets");
            yield return(Resources.UnloadUnusedAssets());

            System.GC.Collect();
            yield return(StartCoroutine(BundleManager.LoadLoginUI()));
        }

        yield return(StartCoroutine(BundleManager.LoadCommonShader()));

        if (nextSceneID == (int)Games.GlobeDefine.GameDefine_Globe.SCENE_DEFINE.SCENE_LOGIN)
        {
            GameManager.gameManager.RunningScene = (int)LoadingWindow.nextSceneID;
            AsyncOperation curAsync = Application.LoadLevelAsync((int)LoadingWindow.nextSceneID);
            while (!curAsync.isDone)
            {
                //SetProgress(curAsync.progress);

                //m_ClipSlider.SetNextProgress(0.9f + 0.1f * curAsync.progress);
                StringBuilder sb = new StringBuilder("");
                sb.AppendFormat("{0}%", (int)(curAsync.progress * 100));
                LabelLoadingProgressNum1.text = sb.ToString();
                LabelLoadingProgressNum2.text = sb.ToString();
                SliderLoading1.sliderValue    = curAsync.progress;
                //loadingSlider.value = curAsync.progress;
                yield return(null);
            }
            //m_ClipSlider.SetProgress(1f);
            LabelLoadingProgressNum1.text = "100%";
            LabelLoadingProgressNum2.text = "100%";
            SliderLoading1.sliderValue    = 1.0f;
            //loadingSlider.value = 1;
        }
        else
        {
            m_ClipSlider.SetNextProgress(1f);
            SliderLoading1.sliderValue    = 0.95f;
            LabelLoadingProgressNum2.text = "95%";
            // 这个地方改为读表,不读GlobeDefine的静态字符串
            Tab_SceneClass sceneClass = TableManager.GetSceneClassByID((int)LoadingWindow.nextSceneID, 0);
            if (sceneClass == null)
            {
                LogModule.ErrorLog("Cant load scene id: {0}", (int)LoadingWindow.nextSceneID);
                yield return(null);
            }
            else
            {
                yield return(StartCoroutine(BundleManager.LoadScene(sceneClass.ResName, LoadSceneFinish)));
            }
        }
    }