/// <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); }
/// <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); }
/// <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); }
/// <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); }
/// <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); }
/// <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); }