예제 #1
0
        /// <summary>
        /// 切换主场景,之前的主场景以及附加场景将会被卸载
        /// </summary>
        /// <param name="location">场景资源地址</param>
        /// <param name="callback">场景加载完毕的回调</param>
        public void ChangeMainScene(string location, System.Action <SceneOperationHandle> finishCallback = null,
                                    System.Action <int> progressCallback = null)
        {
            if (_mainScene != null && _mainScene.IsDone == false)
            {
                MotionLog.Warning($"The current main scene {_mainScene.Location} is not loading done.");
            }

            _mainScene = new AssetScene(location);
            _mainScene.Load(false, true, finishCallback, progressCallback);
        }
예제 #2
0
        /// <summary>
        /// 切换主场景,之前的主场景以及附加场景将会被卸载
        /// </summary>
        /// <param name="location">场景资源地址</param>
        /// <param name="activeOnLoad">加载完成时是否激活场景</param>
        /// <param name="callback">场景加载完毕的回调</param>
        public void ChangeMainScene(string location, bool activeOnLoad, System.Action <SceneInstance> callback)
        {
            if (_mainScene != null)
            {
                UnLoadAllAdditionScenes();
                _mainScene.UnLoad();
                _mainScene = null;
            }

            _mainScene = new AssetScene(location);
            _mainScene.Load(false, activeOnLoad, callback);
        }
예제 #3
0
        /// <summary>
        /// 在当前主场景的基础上加载附加场景
        /// </summary>
        /// <param name="location">场景资源地址</param>
        /// <param name="activeOnLoad">加载完成时是否激活场景</param>
        /// <param name="callback">场景加载完毕的回调</param>
        public void LoadAdditionScene(string location, bool activeOnLoad, System.Action <SceneInstance> callback)
        {
            AssetScene scene = TryGetAdditionScene(location);

            if (scene != null)
            {
                LogSystem.Log(ELogType.Warning, $"The addition scene {location} is already load.");
                return;
            }

            AssetScene newScene = new AssetScene(location);

            _additionScenes.Add(newScene);
            newScene.Load(true, activeOnLoad, callback);
        }
예제 #4
0
        /// <summary>
        /// 在当前主场景上加载附加场景
        /// </summary>
        /// <param name="location">场景资源地址</param>
        /// <param name="activeOnLoad">加载完成时是否激活附加场景</param>
        /// <param name="callback">场景加载完毕的回调</param>
        public void LoadAdditionScene(string location, bool activeOnLoad, System.Action <SceneOperationHandle> finishCallback = null,
                                      System.Action <int> progressCallback = null)
        {
            AssetScene scene = TryGetAdditionScene(location);

            if (scene != null)
            {
                MotionLog.Warning($"The addition scene {location} is already load.");
                return;
            }

            AssetScene newScene = new AssetScene(location);

            _additionScenes.Add(newScene);
            newScene.Load(true, activeOnLoad, finishCallback, progressCallback);
        }
예제 #5
0
        /// <summary>
        /// 获取场景当前的加载进度,如果场景不存在返回0
        /// </summary>
        public int GetSceneLoadProgress(string location)
        {
            if (_mainScene != null)
            {
                if (_mainScene.Location == location)
                {
                    return(_mainScene.Progress);
                }
            }

            AssetScene scene = TryGetAdditionScene(location);

            if (scene != null)
            {
                return(scene.Progress);
            }

            LogSystem.Log(ELogType.Warning, $"Not found scene {location}");
            return(0);
        }
예제 #6
0
        /// <summary>
        /// 检测场景是否加载完毕,如果场景不存在返回false
        /// </summary>
        public bool CheckSceneIsDone(string location)
        {
            if (_mainScene != null)
            {
                if (_mainScene.Location == location)
                {
                    return(_mainScene.IsDone);
                }
            }

            AssetScene scene = TryGetAdditionScene(location);

            if (scene != null)
            {
                return(scene.IsDone);
            }

            LogSystem.Log(ELogType.Warning, $"Not found scene {location}");
            return(false);
        }