public AsyncOperation PreGamescene; //游戏的预加载场景 /// <summary> /// 预加载游戏场景 /// </summary> /// <param name="scene"></param> public void PreloadScene(ESCENE scene) { if (UnityEngine.SceneManagement.SceneManager.GetSceneByName(scene.ToString()).name == null) { PreGamescene = UnityEngine.SceneManagement.SceneManager.LoadSceneAsync(scene.ToString(), UnityEngine.SceneManagement.LoadSceneMode.Additive); PreGamescene.allowSceneActivation = false; } }
public void LoadSceneSingle(ESCENE scene) { leavingScene = enteringScene; enteringScene = scene; sceneManagerHelper.leavingScene = leavingScene; sceneManagerHelper.enteringScene = enteringScene; Leave(); UnityEngine.SceneManagement.SceneManager.LoadScene(scene.ToString(), UnityEngine.SceneManagement.LoadSceneMode.Single); }
/// <summary> /// 加载场景 /// </summary> /// <param name='scene'>场景</param> public void LoadScene(ESCENE scene) { leavingScene = enteringScene; enteringScene = scene; sceneManagerHelper.leavingScene = leavingScene; sceneManagerHelper.enteringScene = enteringScene; Leave(); sceneManagerHelper.LoadLevel(scene.ToString()); }
/// <summary> /// 离开场景 /// </summary> private void Leave() { CurrentScene = ESCENE.NULL; sceneManagerHelper.currentScene = CurrentScene; if (OnLeaveScene != null) { OnLeaveScene(this); } timer = Time.realtimeSinceStartup; }
/// <summary> /// 打开指定的场景 /// </summary> public void OpenPointScene(ESCENE scene) { leavingScene = enteringScene; enteringScene = scene; sceneManagerHelper.leavingScene = leavingScene; sceneManagerHelper.enteringScene = enteringScene; Leave(); if (MahjongGame_AH.GameData.Instance && PreGamescene != null) { if (UnityEngine.SceneManagement.SceneManager.GetSceneByName(ESCENE.MAHJONG_GAME_GENERAL.ToString()).name != null) { UnityEngine.SceneManagement.SceneManager.UnloadSceneAsync(ESCENE.MAHJONG_GAME_GENERAL.ToString()); } if (UnityEngine.SceneManagement.SceneManager.GetSceneByName(ESCENE.MAHJONG_GAME_MAIN_SCENE.ToString()).name != null) { UnityEngine.SceneManagement.SceneManager.UnloadSceneAsync(ESCENE.MAHJONG_GAME_MAIN_SCENE.ToString()); } } if (MahjongLobby_AH.GameData.Instance && PreGamescene != null) { if (UnityEngine.SceneManagement.SceneManager.GetSceneByName(ESCENE.MAHJONG_LOBBY_GENERAL.ToString()).name != null) { AsyncOperation general = UnityEngine.SceneManagement.SceneManager.UnloadSceneAsync(ESCENE.MAHJONG_LOBBY_GENERAL.ToString()); } //卸载其他场景 if (UnityEngine.SceneManagement.SceneManager.GetSceneByName(ESCENE.MAHJONG_LOBBY_MAIN_SCENE.ToString()).name != null) { AsyncOperation main = UnityEngine.SceneManagement.SceneManager.UnloadSceneAsync(ESCENE.MAHJONG_LOBBY_MAIN_SCENE.ToString()); } } EnterScene(scene); }
public void EnterScene(ESCENE scene) { if (PreGamescene != null) { PreGamescene.allowSceneActivation = true; } else { LoadSceneSingle(scene); } if (CurrentScene == EnteringScene) { return; } if (OnEnterScene != null) { OnEnterScene(this); } CurrentScene = EnteringScene; sceneManagerHelper.currentScene = CurrentScene; }
/// <summary> /// 进入场景 /// </summary> private void Enter() { if (CurrentScene == EnteringScene) { return; } //if (PlayBack_1.PlayBackData.isComePlayBack) //{ // return; //} if (OnEnterScene != null) { OnEnterScene(this); } CurrentScene = EnteringScene; sceneManagerHelper.currentScene = CurrentScene; float time = Time.realtimeSinceStartup - timer; DEBUG.LogTracer("SceneManager 加载场景: " + CurrentScene.ToString() + " 花费了 [ " + time + " ] 秒"); }