Ejemplo n.º 1
0
        /// <summary>
        /// 退出当前场景
        /// </summary>
        /// <param name="sceneUIPush"></param>
        public void ExitCurrent(bool sceneUIPush = false)
        {
            if (this.currScene == null)
            {
                return;
            }

            int sceneID = this.currScene.GetSceneID();

            SceneUIHelper.SceneExit(sceneID, sceneUIPush);

            this.currScene.Exit();

            this.currScene.Dispose();

            this.currScene = null;
        }
Ejemplo n.º 2
0
        public void DoSceneLoader()
        {
            this.SceneLoadState = (int)SceneDefine.LoadState.LOADED;

            //场景UI进入
            SceneUIHelper.SceneEnter(this.SceneId, this.isBack);

            if (this.SceneMusic != "")
            {
                SoundComponent.Instance.PlayMusic(this.SceneMusic, 0, 1, true);
            }

            //场景加载完成,通知业务可以实例化对象了
            this.OnLoaded();

            //标记为进入
            this.Enter();

            if (this.onLoadComplete != null)
            {
                this.onLoadComplete();
            }
        }
Ejemplo n.º 3
0
        /// <summary>
        /// 根据场景ID加载新的场景
        /// </summary>
        /// <param name="sceneID"></param>
        /// <param name="param"></param>
        /// <param name="onloaded"></param>
        /// <param name="isback"></param>
        /// <param name="sceneBackStackPush"></param>
        private void LoadScene(int sceneID, SceneParam param, Action onloaded, bool sceneUIPush, bool isback, bool sceneBackStackPush)
        {
            //新建下一个场景
            SceneBase newScene = this.CreateScene(sceneID);

            if (newScene == null)
            {
                return;
            }

            int lastSceneId = this.GetSceneID();

            if (sceneBackStackPush)
            {
                this.sceneBackStack.Add(lastSceneId);
            }

            //缷载旧的场景

            this.lastSceenID = lastSceneId;

            SceneBase lastScene = this.currScene;

            if (lastScene != null)
            {
                string lastSceneName = lastScene.GetSceneName();

                int lastSceneType = lastScene.GetSceneType();

                //退出当前场景并通知UI关闭当前场景UI
                this.ExitCurrent(sceneUIPush);

                //清理当前场景缓存的对象,终止正在加载的队列
                if (lastSceneType != newScene.GetSceneType())
                {
                    SceneUIHelper.UnloadSceneAB(lastSceneName, false);
                }

                SceneUIHelper.MainScene = null;

                SceneUIHelper.MainCamera = null;

                SceneUIHelper.SceneUIRoot = null;

                //除了登陆场景,其他场景切换均有场景过渡

                if (lastSceneType != (int)SceneDefine.SceneType.LOGIN)
                {
                    //如果参数里标记了使用CUTSCENE过渡,那么不要打开这个普通过渡 界面

                    bool useNormalTransition = true;

                    if (param != null)
                    {
                        if (param.UseCutSceneTransition)
                        {
                            useNormalTransition = false;
                        }
                        else if (param.useCivSceneTransition)
                        {
                            useNormalTransition = false;

                            //打开一个加载界面
                        }
                    }

                    if (useNormalTransition)
                    {
                        //打开正常的加载过渡界面
                    }
                }
            }

            this.currScene = newScene;

            //通知开始加载新场景

            SceneUIHelper.MainScene = newScene;

            newScene.Load(param, onloaded, isback);

            //发送场景切换事件
        }