SceneManagerAPI
Provides a mechanism to override specific SceneManager methods.
Read time 1 minuteLast updated 10 days ago
Definition
- Type: Class
- Namespace: UnityEngine.SceneManagement
- Assembly: UnityEngine.CoreModule
public class SceneManagerAPI
Remarks
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.
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 |
|---|---|
| overrideAPI | The specific SceneManagerAPI instance to use to handle overridden SceneManager methods. |
Methods
Method | Description |
|---|---|
| GetNumScenesInBuildSettings | Override for customizing the behavior of the SceneManager.sceneCountInBuildSettings function. |
| GetSceneByBuildIndex | Override for customizing the behavior of the SceneManager.GetSceneByBuildIndex function. |
| LoadFirstScene | Override for customizing the behavior of loading the first Scene in a stub player build. |
| LoadSceneAsyncByNameOrIndex | Override for customizing the behavior of the SceneManager.LoadScene and SceneManager.LoadSceneAsync functions. |
| UnloadSceneAsyncByNameOrIndex | Override for customizing the behavior of the SceneManager.UnloadSceneAsync function. |