예제 #1
0
        private IEnumerator ChangeSceneCoroutine(ISceneLoadCompBase SceneLoadComp)
        {
            Cheduler.StartLoadChanage();
            yield return(UnCurrScene(0, 0.3f));

            yield return(LoadScene(SceneLoadComp.GetSceneName(), 0.3f, 0.7f));

            yield return(LoadSceneControl(SceneLoadComp, 0.7f, 1));

            Cheduler.EndLoadChanage();
        }
예제 #2
0
        private IEnumerator LoadSceneControl(ISceneLoadCompBase SceneLoadComp, float Start, float Target)
        {
            CurrSceneLoadComp = SceneLoadComp;
            int currProcess = 0;
            int toProcess   = 0;

            if (CurrSceneLoadComp != null)
            {
                MyCentorl.StartCoroutine(CurrSceneLoadComp.LoadScene());
                while (LoadSceneProgress < Target)
                {
                    toProcess = (int)(CurrSceneLoadComp.GetProcess() * 100);
                    while (currProcess < toProcess)
                    {
                        ++currProcess;
                        LoadSceneProgress = Mathf.Lerp(Start, Target, currProcess / 100.0f);
                        Cheduler.UpdataProgress(LoadSceneProgress);
                        yield return(new WaitForEndOfFrame());
                    }
                    yield return(new WaitForEndOfFrame());
                }
            }
            else
            {
                toProcess = 100;
                while (LoadSceneProgress < Target)
                {
                    while (currProcess < toProcess)
                    {
                        ++currProcess;
                        LoadSceneProgress = Mathf.Lerp(Start, Target, currProcess / 100.0f);
                        Cheduler.UpdataProgress(LoadSceneProgress);
                        yield return(new WaitForEndOfFrame());
                    }
                    yield return(new WaitForEndOfFrame());
                }
            }
        }
예제 #3
0
 /// <summary>
 /// 跳转场景
 /// </summary>
 /// <param name="SceneId"></param>
 /// <param name="CallBack"></param>
 public void ChangeScene(ISceneLoadCompBase SceneLoadComp)
 {
     ChangeSceneComp.ChangeScene(SceneLoadComp);
 }
예제 #4
0
 public void ChangeScene(ISceneLoadCompBase SceneLoadComp)
 {
     LoadSceneProgress = 0;
     MyCentorl.StartCoroutine(ChangeSceneCoroutine(SceneLoadComp));
 }