Загрузить сцену
Часть раздела Создание настоящих игр путешествия по Unity на Coddy. Урок 17 из 56.
Игра Unity состоит из сцен: меню, каждого уровня, титров. Каждая сцена — это отдельный файл со своими объектами, а скрипт переключается на другую сцену с помощью SceneManager.LoadScene из пространства имён UnityEngine.SceneManagement. Кнопка Play в этом меню, настроенная в Inspector, открывает уровень Forest:
using UnityEngine;
using UnityEngine.SceneManagement;
public class MainMenu : MonoBehaviour
{
public void Play()
{
SceneManager.LoadScene("Forest");
}
}Unity может загружать только сцены, включённые в список сцен сборки: в Unity 6 это File > Build Profiles, в разделе Scene List (в более старых версиях это окно называется Build Settings). Имя должно в точности совпадать с именем файла сцены. Если сцены нет в списке или допущена опечатка, например "Forrest", загрузка не происходит, а в Console появляется ошибка, начинающаяся с Scene 'Forrest' couldn't be loaded и сообщающая, что сцена не добавлена в сборку; игра остаётся в меню.
Переключение происходит не мгновенно. Сначала выполняется оставшаяся часть текущего кадра, поэтому строки после LoadScene всё ещё выполняются; в начале следующего кадра Unity уничтожает все объекты старой сцены и создаёт новую, скрипты которой снова запускаются с Awake и Start.
Задание
ЛегкоХаб с двумя порталами. В этой сборке три сцены: Hub (первая), Desert и Glacier. В хабе один портал ведёт в пустыню, а другой — к леднику; в каждой из этих сцен есть портал обратно в хаб. На каждом портале установлен скрипт Portal, а в Inspector для его sceneName задаётся сцена, в которую он ведёт. Стрелки перемещают Player (уже готово).
Напиши Portal.cs: когда Player (с тегом Player) заходит в портал, загрузи сцену, имя которой указано в sceneName этого портала.
Нажми Play, посети оба места, затем нажми Check.
Попробуйте сами
using UnityEngine;
public class Portal : MonoBehaviour
{
public string sceneName;
// когда игрок войдёт, загрузите сцену с именем sceneName
}
В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.
Все уроки раздела Создание настоящих игр
1Текст на экране
Холст и текстПокажем счётФорматирование чиселТаймер обратного отсчётаПовторение: спидометр4Сцены и уровни
Загрузить сценуПерезапустить уровеньСледующий уровеньСохранить между сценамиПовторение: выбор уровня7Управление временем
Пауза с timeScaleЗамедленное движениеНемасштабируемое времяПовторение: Bullet Time10Проект: 3D-платформер
ТрассаДвижущиеся платформы2Кнопки и экраны
Кнопки и onClickЛямбдыСвязи в InspectorВключение и выключение панелейШкалы здоровьяПовторение: магазин улучшений5Сохранение с помощью PlayerPrefs
Сохранение числаЗагрузка со значением по умолчаниюРекордСохранение настроекПовторение: монеты в банке