using System.Collections;
using UnityEngine;
using UnityEngine.SceneManagement;
using UnityEngine.UI;
public class SceneManagerTest : MonoBehaviour
{
public Text m_Text;
public Button m_Button;
void Start()
{
m_Button.onClick.AddListener(LoadButton);
SceneManager.activeSceneChanged += OnSceneChanged;
SceneManager.sceneLoaded += OnSceneLoaded;
SceneManager.sceneUnloaded += OnSceneUnLoaded;
}
private void OnSceneUnLoaded(Scene arg0)
{
print("OnSceneUnLoaded " + arg0.name);
}
private void OnSceneLoaded(Scene arg0, LoadSceneMode arg1)
{
print("OnSceneLoaded " + arg0.name + " " + arg1);
}
private void OnSceneChanged(Scene arg0, Scene arg1)
{
print("OnSceneChanged " + arg0.name + " " + arg1.name);
}
void LoadButton()
{
StartCoroutine(LoadScene());
}
IEnumerator LoadScene()
{
yield return null;
AsyncOperation asyncOperation = SceneManager.LoadSceneAsync("02_Menu");
//不激活场景
asyncOperation.allowSceneActivation = false;
Debug.Log("Process :" + asyncOperation.progress);
//当加载正在进行时,加载Text和进度条
while (!asyncOperation.isDone)
{
m_Text.text = "Loading progress: " + (asyncOperation.progress * 100) + "%";
if (asyncOperation.progress >= 0.9f)
{
m_Text.text = "Press the space bar to continue";
if (Input.GetKeyDown(KeyCode.A))
//激活场景
asyncOperation.allowSceneActivation = true;
}
yield return null;
}
}
}