Що таке SceneManager в Unity C#?
Клас SceneManager в Unity відповідає за керування сценами у вашому проєкті. Він дозволяє завантажувати, переключати та вивантажувати сцени, а також надає доступ до інформації про поточну сцену або сцени, що завантажуються одночасно.
Цей клас особливо корисний для розробки ігор чи застосунків, де потрібне динамічне керування ігровим процесом через перехід між рівнями, завантаження додаткових сцен чи керування декількома сценами одночасно.
SceneManager
- Завантаження сцен: Використовуйте метод
SceneManager.LoadSceneдля перемикання між сценами або додавання нової сцени до поточного ігрового процесу. - Асинхронне завантаження: Метод
SceneManager.LoadSceneAsyncдозволяє завантажувати сцени у фоні, не зупиняючи роботу гри. - Керування активною сценою: За допомогою методу
SceneManager.SetActiveSceneможна встановити поточну активну сцену. - Події сцен: Клас надає події, такі як
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}");
}
}
Коментарі