Documentation

Unity Engine


User Manual

Script Reference

Unity Engine


SceneManagerAPI

Derive from this base class to provide alternative implementations to the C# behavior of specific SceneManager methods.
Read time 1 minuteLast updated 18 days ago

Definition

public class SceneManagerAPI

Remarks

The example provided logs if scene loading is done by index and logs a warning to switch to loading by scene path.

Examples

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); }}

Constructors

Constructor

Description

SceneManagerAPI()Constructor only to be used by deriving classes. Assign to overrideAPI to override SceneManager methods.

Static Properties

Property

Description

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

Methods

Method

Description

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.