コード例 #1
0
    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;
        }
    }
コード例 #2
0
    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);
    }
コード例 #3
0
    /// <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());
    }
コード例 #4
0
    /// <summary>
    /// 离开场景
    /// </summary>
    private void Leave()
    {
        CurrentScene = ESCENE.NULL;
        sceneManagerHelper.currentScene = CurrentScene;

        if (OnLeaveScene != null)
        {
            OnLeaveScene(this);
        }

        timer = Time.realtimeSinceStartup;
    }
コード例 #5
0
    /// <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);
    }
コード例 #6
0
    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;
    }
コード例 #7
0
    /// <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 + " ] 秒");
    }