value | 上一个活动场景和新活动场景。 |
订阅此事件可在活动场景发生变化时收到通知。
此添加到 activeSceneChanged 中的脚本具有两个隐藏参数,它们是被替换的场景和下一个场景。参数不可见。
In the Editor this event is sent only in Play mode (not in Edit mode). If the event is needed for Edit mode then use
EditorSceneManager.activeSceneChanged.
// SceneManager.activeSceneChanged // // This example configures Scene1 to wait for 1.5 seconds before switching to Scene2. // Scene1 is the replaced scene; Scene2 is the new loaded scene.
using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.SceneManagement;
public class ScriptExample1 : MonoBehaviour { public delegate void Change(); public static event Change TimeChanged;
public void Start() { SceneManager.activeSceneChanged += ChangedActiveScene;
// wait 1.5 seconds before change to Scene2 StartCoroutine(TimeChangedScene()); }
IEnumerator TimeChangedScene() { print(Time.time); yield return new WaitForSeconds(1.5f); print(Time.time);
// call the event TimeChanged(); }
private void ChangedActiveScene(Scene current, Scene next) { string currentName = current.name;
if (currentName == null) { currentName = "Replaced"; }
Debug.Log("Scenes: " + currentName + ", " + next.name); }
void OnEnable() { Debug.Log("OnEnable"); ScriptExample.TimeChanged += ChangeScene; }
void ChangeScene() { Debug.Log("Changing to Scene2"); SceneManager.LoadScene("Scene2");
Scene scene = SceneManager.GetSceneByName("Scene2"); SceneManager.SetActiveScene(scene); }
void OnDisable() { ScriptExample.TimeChanged -= ChangeScene; Debug.Log("OnDisable"); } }
ScriptExample2
将直接宣布这是活动场景。
using System.Collections; using System.Collections.Generic; using UnityEngine;
public class ScriptExample2 : MonoBehaviour { void Start() { Debug.Log("ScriptExample2 starting"); } }