Beispiel #1
0
        IEnumerator OnLoadLevel(SceneType level)
        {
            int displayProgress = 0;
            int toProgress      = 0;

            int            levelIndex = (int)level;
            AsyncOperation op         = SceneManager.LoadSceneAsync(levelIndex);

            op.allowSceneActivation = false;

            while (op.progress < 0.9f)
            {
                toProgress = (int)op.progress * 100;
                while (displayProgress < toProgress)
                {
                    ++displayProgress;
                    loaderPanel.SetLoaderProgress(displayProgress);
                    yield return(new WaitForEndOfFrame());
                }
            }

            toProgress = 100;
            while (displayProgress < toProgress)
            {
                ++displayProgress;
                loaderPanel.SetLoaderProgress(displayProgress);
                yield return(new WaitForEndOfFrame());
            }
            op.allowSceneActivation = true;

            yield return(new WaitForEndOfFrame());

            loaderScene.OnLeaveScenel(sceneType, delegate()
            {
                panelMgr.ClosePanel(UI.PanelName.LoaderPanel);

                GetScene(sceneType.ToString()).OnEnterScene(sceneType);
            });
        }
Beispiel #2
0
        /// <summary>
        /// 加载场景
        /// </summary>
        /// <param name="level"></param>
        public void LoadLevel(SceneType level)
        {
            sceneType = level;

            if (loaderScene == null)
            {
                loaderScene = Game.GetScene <LoaderScene>();
            }

            loaderPanel = panelMgr.CreatePanel(UI.PanelName.LoaderPanel) as LoaderPanel;
            loaderPanel.SetLoaderProgress(0);

            var       scene        = SceneManager.GetActiveScene();
            SceneType currentLevel = (SceneType)scene.buildIndex;

            StartCoroutine(OnLoadLoaderLevel(currentLevel));
        }