SceneManagerAPI

class in UnityEngine.SceneManagement

Switch to Manual

Description

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

The example provided logs if 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 Variables

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

Protected Functions

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.
Copyright © 2023 Unity Technologies
优美缔软件(上海)有限公司 版权所有
"Unity"、Unity 徽标及其他 Unity 商标是 Unity Technologies 或其附属机构在美国及其他地区的商标或注册商标。其他名称或品牌是其各自所有者的商标。
公安部备案号:
31010902002961