Unity 6.3
0 онлайн 8 гостей 3 в системе
Вход

SceneManager.activeSceneChanged

Параметры

Параметр Описание
значение Используйте подписку либо на UnityAction<Scene, Scene>, либо на метод, который принимает два аргумента типа Scene.

Описание

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

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

В Редакторе это событие отправляется только в режиме воспроизведения (не в режиме редактирования). Если событие необходимо для режима редактирования, то используйте EditorSceneManager.activeSceneChangedInEditMode.

// 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 просто объявляет, что это активный Scene.

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class ScriptExample2 : MonoBehaviour { void Start() { Debug.Log("Script2 starting"); } }