Справочники Unity C# SceneManager

Что такое SceneManager в Unity C#?

Класс SceneManager в Unity отвечает за управление сценами в вашем проекте. Он позволяет загружать, переключать и выгружать сцены, а также предоставляет доступ к информации о текущей сцене или сценах, которые загружаются одновременно.

Этот класс особенно полезен для разработки игр или приложений, где требуется динамическое управление игровым процессом через переход между уровнями, загрузку дополнительных сцен или управление несколькими сценами одновременно.


Основные функции класса SceneManager
  1. Загрузка сцен: Используйте метод SceneManager.LoadScene для переключения между сценами или добавления новой сцены в текущий игровой процесс.
  2. Асинхронная загрузка: Метод SceneManager.LoadSceneAsync позволяет загружать сцены в фоне, не останавливая работу игры.
  3. Управление активной сценой: С помощью метода SceneManager.SetActiveScene можно установить текущую активную сцену.
  4. События сцен: Класс предоставляет события, такие как SceneManager.sceneLoaded или SceneManager.sceneUnloaded, для обработки действий при загрузке или выгрузке сцен.


Пример использования SceneManager
using UnityEngine;
using UnityEngine.SceneManagement;

public class SceneController : MonoBehaviour
{
    // Переключение сцены по имени
    public void LoadGameScene()
    {
        SceneManager.LoadScene("GameScene");
    }

    // Переключение сцены с асинхронной загрузкой
    public void LoadMenuSceneAsync()
    {
        StartCoroutine(LoadSceneAsync("MenuScene"));
    }

    private IEnumerator LoadSceneAsync(string sceneName)
    {
        AsyncOperation asyncLoad = SceneManager.LoadSceneAsync(sceneName);

        while (!asyncLoad.isDone)
        {
            Debug.Log($"Прогресс загрузки: {asyncLoad.progress * 100}%");
            yield return null;
        }
    }

    // Событие, вызываемое при загрузке сцены
    void OnEnable()
    {
        SceneManager.sceneLoaded += OnSceneLoaded;
    }

    void OnDisable()
    {
        SceneManager.sceneLoaded -= OnSceneLoaded;
    }

    void OnSceneLoaded(Scene scene, LoadSceneMode mode)
    {
        Debug.Log($"Сцена {scene.name} загружена в режиме {mode}");
    }
}
Комментарии
Добавить комментарий

Пока комментариев нет