Довідники 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}");
    }
}
Коментарі
Додати коментар

Поки що коментарів немає