Version: Unity 6.1 Alpha (6000.1)
LanguageEnglish
  • C#

SceneManagerAPI

class in UnityEngine.SceneManagement

/

Implemented in:UnityEngine.CoreModule

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

Description

Provides a mechanism to override specific SceneManager methods.

Derive from this base class to provide alternative implementations to the C# behavior of specific SceneManager methods.

Warning: The SceneManagerAPI class is intended for advanced usage. Only a single implementation can be active at a time (via SceneManagerAPI.overrideAPI), so its usage could conflict with any other code attempting to use the same mechanism.

The example detects when scene loading is done by index, and logs a warning to switch to loading by scene path.

using UnityEngine;
using Debug = UnityEngine.Debug;
using UnityEngine.SceneManagement;

public class SceneIndexLogger : SceneManagerAPI { [RuntimeInitializeOnLoadMethod] static void OnRuntimeMethodLoad() { SceneManagerAPI.overrideAPI = new SceneIndexLogger(); }

protected override int GetNumScenesInBuildSettings() { Debug.LogWarning("SceneManager.GetNumScenesInBuildSettings() called, please load scenes by path to avoid issues when scenes are reordered."); return base.GetNumScenesInBuildSettings(); }

protected override Scene GetSceneByBuildIndex(int buildIndex) { Debug.Log($"SceneManager.GetSceneByBuildIndex(buildIndex = {buildIndex}) called, please load scenes by path to avoid issues when scenes are reordered."); return base.GetSceneByBuildIndex(buildIndex); } }

Static Properties

overrideAPIThe specific SceneManagerAPI instance to use to handle overridden SceneManager methods.

Protected Methods

GetNumScenesInBuildSettingsOverride for customizing the behavior of the SceneManager.sceneCountInBuildSettings function.
GetSceneByBuildIndexOverride for customizing the behavior of the SceneManager.GetSceneByBuildIndex function.
LoadFirstSceneOverride for customizing the behavior of loading the first Scene in a stub player build.
LoadSceneAsyncByNameOrIndexOverride for customizing the behavior of the SceneManager.LoadScene and SceneManager.LoadSceneAsync functions.
UnloadSceneAsyncByNameOrIndexOverride for customizing the behavior of the SceneManager.UnloadSceneAsync function.