TGViewer
Red Atom Red Atom @unitygamelab · 204 subscribers
Post #32 45
🚀 Scene Manager в Unity: работа со сценами | Часть 2

Сегодня разберем как работать со сценами в Unity с помощью SceneManager — ключевого инструмента для управления "уровнями" вашей игры.

🔄 Работа с классом Scene
Сцены в коде представлены классом Scene. Через SceneManager можно получить данные о сценах:
// Текущая сцена
Scene currentScene = SceneManager.GetActiveScene();
Debug.Log($"Текущая сцена: {currentScene.name}");

// Проверка, загружена ли сцена
if (currentScene.IsValid())
{
Debug.Log("Сцена корректна!");
}


🔧 Основы SceneManager
Класс SceneManager (пространство имён UnityEngine.SceneManagement) отвечает за:
Загрузку/выгрузку сцен
Получение информации о текущей сцене
Обработку событий (например, перед загрузкой)

📌 Загрузка сцен в режиме Single
Single — стандартный режим, который:
Загружает только одну сцену
Выгружает текущую сцену полностью

1. Базовый пример
using UnityEngine.SceneManagement;

// Загрузка сцены по имени
SceneManager.LoadScene("Level_1");

// Загрузка по buildIndex (из Build Settings)
SceneManager.LoadScene(2);


2. Важные нюансы
Build Settings: Сцена должна быть добавлена в File → Build Settings (иначе вызовет ошибку).
Имена чувствительны к регистру: "Menu" ≠ "menu".

⚡️ Полезные методы SceneManager
- LoadScene() — Загружает сцену (по имени или индексу).
- GetActiveScene() — Возвращает текущую активную сцену.
- GetSceneByName() — Находит сцену по имени (без загрузки).
- GetSceneByBuildIndex() — Находит сцену по индексу.

🎮 Практический пример
Сценарий для кнопки "Start Game":
using UnityEngine;
using UnityEngine.SceneManagement;

public class LoadLevel : MonoBehaviour
{
public void LoadNextLevel()
{
// Загружаем следующий уровень (индекс текущей сцены + 1)
int nextSceneIndex = SceneManager.GetActiveScene().buildIndex + 1;
SceneManager.LoadScene(nextSceneIndex);
}
}


⚠️ Частые ошибки
- Сцена не в Build Settings → Добавьте её через File → Build Settings.
- Неверное имя/индекс → Проверьте регистр и цифры.
- Устаревший метод → Не используйте Application.LoadLevel() (он устарел).
  • 👍 1
More from @unitygamelab
  1. Sep 19, 2026Эксперименты Начал экспериментировать с постпроцессингом в URP и написал свой первый шейде…
  2. Sep 12, 2026Закончил все комнаты Закончил, конечно, громко сказано, но по локации уже можно пройтись о…
  3. Sep 5, 2026Добавил ещё две новых комнаты и и осталось всего 6 В главном хабе пришлось потратить много…
  4. Aug 29, 2026ЕЩЁ две комнаты Теперь есть ещё и склад с комнатой управления складом. Расставил свет от б…
  5. Aug 22, 2026Ещё две комнаты Добавил на локацию помещение охраны(небольшая комнатка) и распределительны…
  6. Aug 15, 2026Комната с лифтом Закончил комнату с лифтом - теперь в локации есть два помещения. Очень хо…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →