SceneManager.activeSceneChanged
Other Versions
Leave feedback
Parameters
value Previous active scene and the new active scene.
Description
Subscribe to this event to get notified when the active Scene has changed.
This script added to activeSceneChanged takes two hidden arguments. These are the replaced
Scene and the next Scene. The arguments are not visible.
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 + " seconds");
yield return new WaitForSeconds(1.5f);
print(Time.time + " seconds");
// call the event
TimeChanged();
}
private void ChangedActiveScene(Scene current, Scene next)
{
string currentName = current.name;
if (currentName == null)
{
// Scene1 has been removed
currentName = "Replaced";
}
Debug.Log("Scenes: " + currentName + ", " + next.name);
}
void OnEnable()
{
Debug.Log("OnEnable");
ScriptExample1.TimeChanged += ChangeScene;
}
void ChangeScene()
{
Debug.Log("Changing to Scene2");
SceneManager.LoadScene("Scene2");
Scene scene = SceneManager.GetSceneByName("Scene2");
SceneManager.SetActiveScene(scene);
}
void OnDisable()
{
ScriptExample1.TimeChanged -= ChangeScene;
Debug.Log("OnDisable happened for Scene1");
}
}
ScriptExample2 simply announces that this is the active scene.
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class ScriptExample2 : MonoBehaviour
{
void Start()
{
Debug.Log("Script2 starting");
}
}
SceneManager.sceneLoaded
Other Versions
Leave feedback
Description
Add a delegate to this to get notifications when a Scene has loaded.
Rather than being called directly this script code shows use of a delegate. This means
the sceneLoaded value is added into a list of delegates.
In the script example below a number of method calls are shown. Specifically the first labelled
method OnEnable() is used to add OnSceneLoaded (), which is not a Unity provided method.
The SceneManager.sceneLoaded delegate can have any method hooked into it and it is
OnSceneLoaded () here. Finally, OnDisable() is used to remove OnSceneLoaded ()
from SceneManager.sceneLoaded.
using UnityEngine;
using UnityEngine.SceneManagement;
public class ExampleCode : MonoBehaviour
{
// called zero
void Awake()
{
Debug.Log("Awake");
}
// called first
void OnEnable()
{
Debug.Log("OnEnable called");
SceneManager.sceneLoaded += OnSceneLoaded;
}
// called second
void OnSceneLoaded(Scene scene, LoadSceneMode mode)
{
Debug.Log("OnSceneLoaded: " + scene.name);
Debug.Log(mode);
}
// called third
void Start()
{
Debug.Log("Start");
}
// called when the game is terminated
void OnDisable()
{
Debug.Log("OnDisable");
SceneManager.sceneLoaded -= OnSceneLoaded;
}
}

Scene manager

  • 1.
    SceneManager.activeSceneChanged Other Versions Leave feedback Parameters valuePrevious active scene and the new active scene. Description Subscribe to this event to get notified when the active Scene has changed. This script added to activeSceneChanged takes two hidden arguments. These are the replaced Scene and the next Scene. The arguments are not visible. 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();
  • 2.
    public static eventChange TimeChanged; public void Start() { SceneManager.activeSceneChanged += ChangedActiveScene; // wait 1.5 seconds before change to Scene2 StartCoroutine(TimeChangedScene()); } IEnumerator TimeChangedScene() { print(Time.time + " seconds"); yield return new WaitForSeconds(1.5f); print(Time.time + " seconds"); // call the event TimeChanged(); } private void ChangedActiveScene(Scene current, Scene next) { string currentName = current.name; if (currentName == null)
  • 3.
    { // Scene1 hasbeen removed currentName = "Replaced"; } Debug.Log("Scenes: " + currentName + ", " + next.name); } void OnEnable() { Debug.Log("OnEnable"); ScriptExample1.TimeChanged += ChangeScene; } void ChangeScene() { Debug.Log("Changing to Scene2"); SceneManager.LoadScene("Scene2"); Scene scene = SceneManager.GetSceneByName("Scene2"); SceneManager.SetActiveScene(scene); } void OnDisable()
  • 4.
    { ScriptExample1.TimeChanged -= ChangeScene; Debug.Log("OnDisablehappened for Scene1"); } } ScriptExample2 simply announces that this is the active scene. using System.Collections; using System.Collections.Generic; using UnityEngine; public class ScriptExample2 : MonoBehaviour { void Start() { Debug.Log("Script2 starting"); } } SceneManager.sceneLoaded
  • 5.
    Other Versions Leave feedback Description Adda delegate to this to get notifications when a Scene has loaded. Rather than being called directly this script code shows use of a delegate. This means the sceneLoaded value is added into a list of delegates. In the script example below a number of method calls are shown. Specifically the first labelled method OnEnable() is used to add OnSceneLoaded (), which is not a Unity provided method. The SceneManager.sceneLoaded delegate can have any method hooked into it and it is OnSceneLoaded () here. Finally, OnDisable() is used to remove OnSceneLoaded () from SceneManager.sceneLoaded. using UnityEngine; using UnityEngine.SceneManagement; public class ExampleCode : MonoBehaviour { // called zero void Awake() { Debug.Log("Awake"); } // called first void OnEnable() { Debug.Log("OnEnable called");
  • 6.
    SceneManager.sceneLoaded += OnSceneLoaded; } //called second void OnSceneLoaded(Scene scene, LoadSceneMode mode) { Debug.Log("OnSceneLoaded: " + scene.name); Debug.Log(mode); } // called third void Start() { Debug.Log("Start"); } // called when the game is terminated void OnDisable() { Debug.Log("OnDisable"); SceneManager.sceneLoaded -= OnSceneLoaded;
  • 7.