Add a delegate to this to get notifications when a Scene has unloaded
Rather than being called directly this script code shows use of a delegate. This means the sceneUnloaded value is added into a list of delegates.
In the script example below a method call is shown. Specifically a function called OnSceneUnloaded is added to sceneUnloaded. SceneUnloaded is called when the scene it is associated with is closed. At this point SceneUnloaded should be removed from the sceneUnloaded list.
#pragma strict public class SceneLoaded1 extends MonoBehaviour { public function Start() { SceneManager.sceneUnloaded += OnSceneUnloaded; Debug.Log("Start: SceneLoaded1"); } private function OnSceneUnloaded(current: Scene) { Debug.Log("OnSceneUnloaded: " + current); } function Update() { if (Input.GetKey("space")) { Debug.Log("Quitting Scene1"); ChangeScene(); } } function ChangeScene() { Debug.Log("Changing to Scene2"); SceneManager.LoadScene("Scene2"); } function OnDestroy() { Debug.Log("OnDestroy"); } }
using UnityEngine; using UnityEngine.SceneManagement;
public class SceneLoaded1 : MonoBehaviour { public void Start() { SceneManager.sceneUnloaded += OnSceneUnloaded; Debug.Log("Start: SceneLoaded1"); }
private void OnSceneUnloaded(Scene current) { Debug.Log("OnSceneUnloaded: " + current); }
void Update() { if (Input.GetKey("space")) { Debug.Log("Quitting Scene1"); ChangeScene(); } }
void ChangeScene() { Debug.Log("Changing to Scene2");
SceneManager.LoadScene("Scene2"); }
void OnDestroy() { Debug.Log("OnDestroy"); } }
SceneLoaded2
simply announces that this is the active scene.
#pragma strict public class SceneLoaded2 extends MonoBehaviour { public function Start() { Debug.Log("SceneLoaded2"); } }
using System.Collections; using System.Collections.Generic; using UnityEngine;
public class SceneLoaded2 : MonoBehaviour { public void Start() { Debug.Log("SceneLoaded2"); } }