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(); }
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()); } } }
/// <summary> /// 跳转场景 /// </summary> /// <param name="SceneId"></param> /// <param name="CallBack"></param> public void ChangeScene(ISceneLoadCompBase SceneLoadComp) { ChangeSceneComp.ChangeScene(SceneLoadComp); }
public void ChangeScene(ISceneLoadCompBase SceneLoadComp) { LoadSceneProgress = 0; MyCentorl.StartCoroutine(ChangeSceneCoroutine(SceneLoadComp)); }