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