Описание
Наследуйте от этого базового класса, чтобы обеспечить альтернативные реализации поведения C# конкретных методов SceneManager.
Приведенный пример регистрирует, если загрузка сцены выполняется по индексу, и регистрирует предупреждение о переключении на загрузку по пути к сцене.
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);
}
}
Статические Свойства
overrideAPI | Конкретный экземпляр SceneManagerAPI, используемый для обработки переопределенных методов SceneManager. |
Защищенные методы
GetNumScenesInBuildSettings | Переопределение для настройки поведения функции SceneManager.sceneCountInBuildSettings. |
GetSceneByBuildIndex | Переопределение для настройки поведения функции SceneManager.GetSceneByBuildIndex . |
LoadFirstScene | Переопределение для настройки поведения загрузки первой сцены в сборке проигрывателя-заглушки. |
LoadSceneAsyncByNameOrIndex | Переопределение для настройки поведения функций SceneManager.LoadScene и SceneManager.LoadSceneAsync. |
UnloadSceneAsyncByNameOrIndex | Переопределение для настройки поведения функции SceneManager.UnloadSceneAsync. |