Ejemplo n.º 1
0
 /// <summary>
 /// 初始化
 /// </summary>
 public void Initialize()
 {
     _LoadingScene     = CreateSceneState <LoadingSceneState>("LoadingScene", false, false) as LoadingSceneState;
     _CurScene         = CreateSceneState <InitSceneState>("InitScene", false, false);
     _CurScene.IsBegin = true;
     _CurScene.SceneBegin();
 }
Ejemplo n.º 2
0
 /// <summary>
 /// 异步加载,返回异步操作数,协程操作
 /// </summary>
 /// <param name="scene"></param>
 /// <returns></returns>
 private void LoadSceneAsync(ISceneState scene)
 {
     //先加载对应的AB包
     if (scene.IsABLoad)
     {
         GameManager.Instance.LoadSceneAB(scene.SceneName);
     }
     //使用异步操作数直接赋值监控就行了,好像不用迭代
     LoadingProcess = SceneManager.LoadSceneAsync(scene.SceneName); //内部开启了一个协程,我们不用管它的逻辑
     LoadingProcess.allowSceneActivation = false;                   //异步加载
     _CurScene = scene;
 }
Ejemplo n.º 3
0
 /// <summary>
 /// 不通过LoadingScene简单同步加载
 /// </summary>
 /// <param name="sceneName"></param>
 private void LoadScene(ISceneState scene)
 {
     //旧状态离开
     if (_CurScene != null)
     {
         _CurScene.SceneExit();
     }
     //先加载对应的AB包
     if (scene.IsABLoad)
     {
         GameManager.Instance.LoadSceneAB(scene.SceneName);
     }
     SceneManager.LoadScene(scene.SceneName);
     //赋值新状态
     _CurScene = scene;
 }
Ejemplo n.º 4
0
 /// <summary>
 /// 加载场景
 /// </summary>
 /// <param name="scene">场景状态类</param>
 /// <param name="isLoading">是否已经通过Loading界面加载</param>
 public void SetSceneState(ISceneState scene, bool isLoading)
 {
     if (scene.IsWithLoading)
     {
         if (!isLoading)
         {
             LoadSceneWithLoading(scene);
         }
         else
         {
             LoadSceneAsync(scene);
         }
     }
     else
     {
         //加载新场景
         LoadScene(scene);
     }
 }
Ejemplo n.º 5
0
 /// <summary>
 /// 输入一个场景的名称,
 /// 先跳转到Loading场景在跳转进目标场景中
 /// </summary>
 /// <param name="sceneName"></param>
 private void LoadSceneWithLoading(ISceneState scene)
 {
     _LoadingScene.SetNextScene(scene);
     //同步加载到Loading场景
     LoadScene(_LoadingScene);
 }
Ejemplo n.º 6
0
        /// <summary>
        /// 加载场景
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="sceneName">场景名称</param>
        /// <param name="isABLoad">场景是否在AB包中</param>
        /// <param name="isWithLoading">是否属于异步Loading界面加载</param>
        /// <param name="isLoading">是否已经通过Loading界面加载</param>
        public void SetSceneState <T>(string sceneName, bool isABLoad, bool isWithLoading, bool isLoading) where T : ISceneState, new()
        {
            ISceneState scene = CreateSceneState <T>(sceneName, isABLoad, isWithLoading);

            SetSceneState(scene, isLoading);
        }