Version: 2017.4
LanguageEnglish
  • C#
  • JS

Script language

Select your preferred scripting language. All code snippets will be displayed in this language.

SceneManager.SetActiveScene

Suggest a change

Success!

Thank you for helping us improve the quality of Unity Documentation. Although we cannot accept all submissions, we do read each suggested change from our users and will make updates where applicable.

Close

Submission failed

For some reason your suggested change could not be submitted. Please <a>try again</a> in a few minutes. And thank you for taking the time to help us improve the quality of Unity Documentation.

Close

Cancel

public static method SetActiveScene(scene: SceneManagement.Scene): bool;
public static bool SetActiveScene(SceneManagement.Scene scene);

Parameters

sceneThe Scene to be set.

Returns

bool Returns false if the Scene is not loaded yet.

Description

Set the Scene to be active.

The active Scene is the Scene which will be used as the target for new GameObjects instantiated by scripts. When you add a Scene additively (see LoadSceneMode.Additive), the first Scene is still kept as the active Scene. Use this to switch the active Scene to the Scene you want as the target.

#pragma strict
// 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)
public class Example extends MonoBehaviour {
	var m_SceneLoaded: boolean;
	public var m_LoadSceneButtonm_SetActiveButton: Button;
	function 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
			var loadButton: Button = m_LoadSceneButton.GetComponent.<Button>();
			// Call the LoadScene2Button() function when this Button is clicked
			loadButton.onClick.AddListener(LoadSceneButton);
		}
		if (m_SetActiveButton != null) {
			var buttonTwo: Button = m_SetActiveButton.GetComponent.<Button>();
			buttonTwo.onClick.AddListener(SetActiveSceneButton);
		}
	}
	// Load the Scene when this Button is pressed
	function LoadSceneButton() {
		// Check that the second Scene hasn't been added yet
		if (m_SceneLoaded == false) {
			// Loads the second Scene
			SceneManager.LoadScene("Scene2", LoadSceneMode.Additive);
			// 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
	function 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"));
			// See now that the name is updated
			Debug.Log("Active Scene : " + SceneManager.GetActiveScene().name);
		}
	}
}
// 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); // Ouputs 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 same of the active Scene // See now that the name is updated Debug.Log("Active Scene : " + SceneManager.GetActiveScene().name); } } }
Copyright © 2023 Unity Technologies
优美缔软件(上海)有限公司 版权所有
"Unity"、Unity 徽标及其他 Unity 商标是 Unity Technologies 或其附属机构在美国及其他地区的商标或注册商标。其他名称或品牌是其各自所有者的商标。
公安部备案号:
31010902002961