Параметры
scene | Сцена, которую нужно установить. |
Возвращает
bool Возвращает false, если сцена еще не загружена.
Описание
Делает сцену активной.
Активная сцена — это сцена, которая будет использоваться в качестве цели для новых игровых объектов, созданных сценариями, и из какой сцены используются настройки освещения. Когда вы добавляете Сцену аддитивно (см. LoadSceneMode.Additive), первая Сцена по-прежнему остается активной Сценой. Используйте это, чтобы переключить активную сцену на сцену, которую вы хотите использовать в качестве цели.
Всегда должна быть одна сцена, помеченная как активная сцена. Обратите внимание, что активная сцена не влияет на визуализацию сцен.
// 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 SceneButton) 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 SceneSceneManager.LoadScene("Scene2", LoadSceneMode.Additive);
// Outputs the name of the current active Scene.
// Notice it still outputs the name of the first SceneDebug.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 SceneSceneManager.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);
}
}
}