Unity场景切换需要太多时间

时间:2018-06-29 11:14:34

标签: c# unity3d scene-manager

我创建了一个带有场景中主菜单的游戏,而第二个场景中包含了实际的游戏。当用户点击主菜单场景上的播放按钮时,它会加载实际的游戏场景,但问题是它花费了太多时间。我该怎么办?

这是我正在使用的代码:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.SceneManagement;

public class MainMenu : MonoBehaviour {

    public void PlayGame()
    {
        SceneManager.LoadScene(SceneManager.GetActiveScene().buildIndex + 1);

    }
    public void QuitGame()
    {
        Debug.Log("Ho gaya....! Mera Ho gya");
        Application.Quit();
    }
}

2 个答案:

答案 0 :(得分:3)

您可以使用LoadSceneAsync预先加载级别,但不能激活它,加载完成后会得到一个回调,然后您可以在用户按下应该即时的按钮时简单地激活场景

答案 1 :(得分:1)

或者,您也可以等待上述按钮按下以调用SceneManager.LoadSceneAsync,但是在实际游戏场景加载时显示一个窗帘(也称为加载屏幕)。协程在这里是您的朋友,因为您可以yield return通过协程IE来AsyncOperation的完成

var curtain = Instantiate(CurtainPrefab);
DontDestoryOnLoad(curtain);
yield return SceneManager.LoadSceneAsync(gameSceneIndex);

// Don't allow unload to clean up this object or it'll stop the coroutine before destroying the curtain!
DontDestroyOnLoad(gameObject);
yield return SceneManager.UnloadSceneAsync(mainMenuSceneIndex);
Destroy(curtain);

// Do this last or the Coroutine will stop short
Destroy(gameObject);