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

SceneManager.SetActiveScene

Declaration

public static bool SetActiveScene(SceneManagement.Scene scene);

Параметры

Параметр Описание
сцена Scene для установки.

Возвращаемое значение

логическое Возвращает false, если Scene еще не загружен.

Описание

Настройте Scene на активный.

Активный Scene — это Scene, который будет использоваться в качестве цели для новых GameObjects, созданных скриптами, и из которого Scene используются настройки освещения. Когда вы добавляете Scene в дополнение (см. LoadSceneMode.Additive), первый Scene по-прежнему остается активным Scene. Используйте это для переключения активного Scene на Scene, который вы хотите использовать в качестве цели.

Всегда должен быть один Scene, помеченный как активный Scene. Обратите внимание, что активный Scene не влияет на то, какие сцены будут отображаться.

// Attach this script to a GameObject
// Create 2 Buttons (Create>UI>Button)
// Attach the 2 Buttons to your GameObject’s Inspector

// This script allows you to load a second Scene as an Additive Scene. Click the first Button (Load Scene Button) to load the Additive Scene. Even though the second Scene loads, the first Scene remains the active Scene. // If you press the second Button (Set Active Button), it sets the second Scene as the active Scene (and outputs the current active Scene to the console)

using UnityEngine; using UnityEngine.SceneManagement; using UnityEngine.UI;

public class Example : MonoBehaviour { bool m_SceneLoaded; public Button m_LoadSceneButton, m_SetActiveButton;

void Awake() { // Outputs the current active Scene to the console Debug.Log("Active Scene : " + SceneManager.GetActiveScene().name);

// Check that this Button exists if (m_LoadSceneButton != null) { // Fetch the Button from the Inspector. Make sure to set this in the Inspector window Button loadButton = m_LoadSceneButton.GetComponent<Button>();

// Call the LoadScene2Button() function when this Button is clicked loadButton.onClick.AddListener(LoadSceneButton); }

if (m_SetActiveButton != null) { Button buttonTwo = m_SetActiveButton.GetComponent<Button>(); buttonTwo.onClick.AddListener(SetActiveSceneButton); } }

// Load the Scene when this Button is pressed void LoadSceneButton() { // Check that the second Scene hasn't been added yet if (m_SceneLoaded == false) { // Loads the second Scene SceneManager.LoadScene("Scene2", LoadSceneMode.Additive);

// Outputs the name of the current active Scene. // Notice it still outputs the name of the first Scene Debug.Log("Active Scene : " + SceneManager.GetActiveScene().name);

// The Scene has been loaded, exit this method m_SceneLoaded = true; } }

// Change the newly loaded Scene to be the active Scene if it is loaded void SetActiveSceneButton() { // Allow this other Button to be pressed when the other Button has been pressed (Scene 2 is loaded) if (m_SceneLoaded == true) { // Set Scene2 as the active Scene SceneManager.SetActiveScene(SceneManager.GetSceneByName("Scene2"));

// Ouput the name of the active Scene // See now that the name is updated Debug.Log("Active Scene : " + SceneManager.GetActiveScene().name); } } }