2

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

这是我正在使用的代码:

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();
    }
}
4

2 回答 2

4

您可以使用 LoadSceneAsync 提前加载关卡,但不能激活它,加载完成时会收到回调,而当用户按下按钮时,您可以简单地激活场景,这应该是即时的

于 2018-06-29T14:00:31.643 回答
1

或者,您也可以等到按下所述按钮调用SceneManager.LoadSceneAsync,但在实际游戏场景加载时显示一个幕布(也称为加载屏幕)。AsyncOperation协程是你的朋友,因为你可以yield return从协程 IE中等待完成

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);
于 2018-06-29T14:12:00.540 回答