我创建了一个带有场景中主菜单的游戏,而第二个场景中包含了实际的游戏。当用户点击主菜单场景上的播放按钮时,它会加载实际的游戏场景,但问题是它花费了太多时间。我该怎么办?
这是我正在使用的代码:
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();
}
}
答案 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);