Мои Уведомления
Привет, !
Мой Аккаунт Мои Финансы Мои Подписки Мои Настройки Выход
Руководство API скрипты

SceneManager.activeSceneChanged

Параметры

value Use a subscription of either a UnityAction<Scene, Scene> or a method that takes two Scene types arguments.

Описание

Подпишитесь на это событие, чтобы получать уведомления об изменении активной сцены.

Этот скрипт, добавленный в activeSceneChanged, принимает два скрытых аргумента. Это замененная сцена и следующая сцена. Аргументы не видны.

В редакторе это событие отправляется только в режиме воспроизведения (но не в режиме редактирования). Если событие необходимо для режима редактирования, используйте 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"); } }
Вы можете отблагодарить автора, за перевод документации на русский язык. ₽ Спасибо
API скрипты 2021.3