/// <summary> /// 直接切换 /// </summary> /// <param name="_sceneType"></param> public void ChangeSceneDirect(ScnType _sceneType) { UIManager.Instance.CloseUIAll(); if (CurrentScene != null) { CurrentScene.Release(); CurrentScene = null; } LastSceneType = ChangeSceneType; ChangeSceneType = _sceneType; SceneInfoData sid = GetSceneInfo(_sceneType); string sceneName = GetSceneName(_sceneType); //change scene MonoHelper.Instance.StartCoroutine(AsyncLoadScene(sceneName, () => { // 注册场景Module ModuleManager.Instance.RegisterModule(sid.SceneType); if (sceneOpenUIType != UIType.None) { UIManager.Instance.OpenUICloseOthers(sceneOpenUIType, false, sceneOpenUIParams); sceneOpenUIType = UIType.None; } })); }
public void UnRegisterScene(ScnType _sceneID) { if (dicSceneInfos.ContainsKey(_sceneID)) { dicSceneInfos.Remove(_sceneID); } }
public string GetSceneName(ScnType _sceneID) { if (dicSceneInfos.ContainsKey(_sceneID)) { return(dicSceneInfos[_sceneID].SceneName); } Debug.LogError("This Scene is not register! ID: " + _sceneID.ToString()); return(null); }
/// <summary> /// 场景切换 /// </summary> /// <param name="_sceneType"></param> /// <param name="_uiType"></param> /// <param name="_params"></param> public void ChangeSceneDirect(ScnType _sceneType, UIType _uiType, params object[] _params) { sceneOpenUIType = _uiType; sceneOpenUIParams = _params; if (ChangeSceneType != _sceneType) { ChangeSceneDirect(_sceneType); } }
/// <summary> /// 关卡管理类注册 /// </summary> /// <param name="_sceneID">关卡ID</param> /// <param name="_sceneName">关卡名</param> /// <param name="_sceneType">关卡管理类</param> /// <param name="_params">参数</param> private void RegisterScene(ScnType _sceneID, string _sceneName, Type _sceneType, params object[] _params) { if (_sceneType == null || _sceneType.BaseType != typeof(BaseScene)) { throw new Exception("Register scene type must not null and extends BaseScene"); } if (!dicSceneInfos.ContainsKey(_sceneID)) { SceneInfoData sceneInfo = new SceneInfoData(_sceneName, _sceneType, _params); dicSceneInfos.Add(_sceneID, sceneInfo); } }
internal BaseScene GetBaseScene(ScnType _sceneType) { Debug.Log(" GetBaseScene sceneId = " + _sceneType.ToString()); SceneInfoData sceneInfo = GetSceneInfo(_sceneType); if (sceneInfo == null || sceneInfo.SceneType == null) { return(null); } BaseScene scene = System.Activator.CreateInstance(sceneInfo.SceneType) as BaseScene; return(scene); }
public void ChangeScene(ScnType _sceneType) { UIManager.Instance.CloseUIAll(); if (CurrentScene != null) { CurrentScene.Release(); CurrentScene = null; } LastSceneType = ChangeSceneType; ChangeSceneType = _sceneType; //change loading scene MonoHelper.Instance.StartCoroutine(AsyncLoadOtherScene()); }
/// <summary> /// 加载有过渡loading的界面切换 /// </summary> /// <param name="_sceneType"></param> /// <param name="_uiType"></param> /// <param name="_params"></param> public void ChangeScene(ScnType _sceneType, UIType _uiType, params object[] _params) { sceneOpenUIType = _uiType; sceneOpenUIParams = _params; if (LastSceneType == _sceneType) { if (sceneOpenUIType == UIType.None) { return; } UIManager.Instance.OpenUI(sceneOpenUIType, false, sceneOpenUIParams); sceneOpenUIType = UIType.None; } else { ChangeScene(_sceneType); } }
/// <summary> /// 设置SCN类型 /// </summary> /// <param name="type">SCN类型</param> public void SetType(ScnType type) { Type = type; }
public bool IsRegisterScene(ScnType _sceneID) { return(dicSceneInfos.ContainsKey(_sceneID)); }