Найти в Дзене

Работа с несколькими сценами (локациями) в 2D

Для того, чтобы реализовать в проекте несколько локаций или добавить меню, необходимо создать дополнительные сцены при помощи меню File -> New Scene Далее выбираем сцену Basic 2D. Создается новая пустая сцена с камерой. Сцену необходимо сохранить, нажав правой кнопкой мыши на названии сцены "Untitled" и выбрав "Save Scene As": Далее необходимо указать папку, в которой эта сцена будет сохранена. Выберите папку "Scenes", где уже лежит "SampleScene", чтобы все сцены находились в одной папке - это удобно при работе. Далее с этой сценой мы работаем как обычно - реализовываем на ней какую-то локацию или, например, меню. Для переключения между сценами для начала нужно добавить эту новую сцену в сборку при помощи меню File->Build Settings. Откроется соответствующее окно, в котором нажимаем кнопку "Add Open Scenes". Наша новая сцена появится в списке "Scenes In Build": Теперь мы можем реализовать переход из сцены в сцену при помощи кнопки или какого-то триггера. Рассмотрим, как реализовать

Для того, чтобы реализовать в проекте несколько локаций или добавить меню, необходимо создать дополнительные сцены при помощи меню

File -> New Scene

Создание новой сцены
Создание новой сцены

Далее выбираем сцену Basic 2D.

Тип сцены
Тип сцены

Создается новая пустая сцена с камерой. Сцену необходимо сохранить, нажав правой кнопкой мыши на названии сцены "Untitled" и выбрав "Save Scene As":

Сохранение сцены
Сохранение сцены

Далее необходимо указать папку, в которой эта сцена будет сохранена. Выберите папку "Scenes", где уже лежит "SampleScene", чтобы все сцены находились в одной папке - это удобно при работе.

Сохранение сцены
Сохранение сцены

Далее с этой сценой мы работаем как обычно - реализовываем на ней какую-то локацию или, например, меню.

Для переключения между сценами для начала нужно добавить эту новую сцену в сборку при помощи меню File->Build Settings. Откроется соответствующее окно, в котором нажимаем кнопку "Add Open Scenes". Наша новая сцена появится в списке "Scenes In Build":

Добавляем сцену в сборку
Добавляем сцену в сборку

Теперь мы можем реализовать переход из сцены в сцену при помощи кнопки или какого-то триггера.

Рассмотрим, как реализовать переход по кнопке. Для этого на сцену добавим UI-компонент Button, которому прикрепим новый скрипт "ButtonScript":

UI-компонент Button
UI-компонент Button

В скрипте нам не нужны методы Start и Update, поэтому мы можем удалить их. Нам нужен новый метод ChangeScene() для перехода на другую сцену. Этот метод обязательно должен иметь модификатор public, чтобы до него был доступ в Unity!

Метод, при помощи которого можно перейти на другую сцену, в данном случае SampleScene, выглядит так:

SceneManager.LoadScene("SampleScene");

Здесь важно в двойных кавычках указать точное имя сцены, куда нужно перейти - важен даже регистр!

Обратите внимание, если SceneManager подчеркивается красной волнистой линией, значит у Вас не подключена библиотека. Необходимо ее добавить:

Скрипт
Скрипт

После того, как написан скрипт, необходимо связать нажатие нашей кнопки на сцене с этим методом ChangeScene(). Тогда при нажатии кнопки будет вызываться этот метод и соответственно загружаться новая сцена. Для этого в Unity, в инспекторе кнопки находим раздел "On Click ()". Пока что он пустой, поэтому мы нажимаем "плюс" внизу этого раздела т добавляем новую привязку:

Раздел On Click ()
Раздел On Click ()

Далее настраиваем следующим образом:

  • в первом поле оставляем параметр по умолчанию - "Runtime only", то есть кнопка будет работать только в режиме запущенной игры;
  • во поле ниже необходимо выбрать объект, находящийся на сцене, к которому привязан скрипт с нужным методом ChangeScene(). В данном случае это сама кнопка, поскольку скрипт мы создавали именно для нее.

При нажатии на это поле у нас появится вот такое окно, в котором необходимо выбрать объекты сцены и нашу кнопку:

Выбор объекта со скриптом
Выбор объекта со скриптом

  • и в третьем поле необходимо найти наш метод ChangeScene(). Если до этого все сделано верно, то этот метод появится в выпадающем списке:
Выбор метода
Выбор метода

Если метод не появился, проверьте правильность выполнения предыдущих шагов.

Если переход на другую сцену нужно делать при помощи какого-то триггера, например, на сцене есть объект, при соприкосновении с которым нужно загрузить новую локацию, то в скрипте этого объекта в методе OnTriggerEnter2D необходимо просто вызывать метод загрузки новой сцены:

Переход по триггеру
Переход по триггеру