Menu
CoddyTech

Загрузить сцену

Часть раздела Создание настоящих игр путешествия по 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.

challenge icon

Задание

Легко

Хаб с двумя порталами. В этой сборке три сцены: Hub (первая), Desert и Glacier. В хабе один портал ведёт в пустыню, а другой — к леднику; в каждой из этих сцен есть портал обратно в хаб. На каждом портале установлен скрипт Portal, а в Inspector для его sceneName задаётся сцена, в которую он ведёт. Стрелки перемещают Player (уже готово).

Напиши Portal.cs: когда Player (с тегом Player) заходит в портал, загрузи сцену, имя которой указано в sceneName этого портала.

Нажми Play, посети оба места, затем нажми Check.

Попробуйте сами

using UnityEngine;

public class Portal : MonoBehaviour
{
    public string sceneName;

    // когда игрок войдёт, загрузите сцену с именем sceneName
}
quiz iconПроверьте себя

В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.

Все уроки раздела Создание настоящих игр