Сцены в Unity можно рассматривать как уникальные уровни или даже как отдельные экраны, такие как главное меню. В предыдущей статье мы создали экран окончания игры, просто отображая текст поверх существующей игровой сцены. Однако для перезапуска игры после завершения игры необходимо использовать Unity Scene Management.

В этой статье вы узнаете, как перезапустить игру из состояния Game Over!

Как загрузить сцены в Unity

  1. Убедитесь, что сцена, которую вы хотите загрузить, добавлена ​​в ваши Настройки сборки. В противном случае сцена не будет распознана при попытке доступа к ней с помощью кода, что приведет к ошибке.

2. Добавьте в скрипт библиотеку Unity Scene Management. Вы можете поместить это во вновь созданный сценарий GameManager, чтобы отслеживать состояние игры.

Следующие шаги будут выполняться в том же скрипте, в котором было размещено управление сценами

3. Создайте переменную типа bool для отслеживания состояния окончания игры.

Примечание. Если вы следуете этому руководству, чтобы узнать, как загружать сцены в целом, ваш процесс будет завершен на шаге 4, а этот шаг можно пропустить . Вам также не нужно добавлять во входные данные условие окончания игры.

4. В void Update установите ввод пользователя для ключа, который перезапустит игру. Это может быть любая клавиша, в моем случае я использую «R» для перезапуска.

Поскольку вы ранее добавили библиотеку управления сценами, у вас есть доступ к SceneManager, который загрузит желаемую сцену.

Сцена идентифицируется по ее имени или по соответствующему номеру сцены. В приведенном выше примере сцена идентифицируется по ее номеру, что быстрее, чем использование строки / имени сцены.

Вы можете просмотреть оба в настройках сборки. Вы также можете просмотреть и изменить имя сцены из папки проекта.

5. Создайте метод void для изменения значения переменной bool из шага 3.

Примечание. Для изменения переменных типа bool рекомендуется использовать методы, а не делать это напрямую.

Следующие шаги будут выполняться в скрипте UI Manager, который был создан в статье Система оценок и в дальнейшем использован для Счетчика жизней и Экран окончания игры.

В качестве альтернативы вы можете следовать своему собственному коду, применяя эту логику в сценарии, где это имеет наибольший смысл. Например. Скрипт, который может запускать состояние окончания игры, обрабатывая смерть игрока или текущие его жизни.

  1. Используя Связь сценария, войдите в сценарий GameManager из сценария UI Manager или из вашего текущего сценария.

2. Вызовите метод GameOver для сценария UI Manager или текущего сценария. Я создал метод, содержащий все, что происходит в моем коде во время экрана завершения игры, чтобы избежать беспорядка.

Примечание. Убедитесь, что метод, который вы пытаетесь вызвать, является общедоступным, иначе вы получите ошибку уровня защиты.

3. Метод GameOver Sequence вызывается, когда жизни игрока равны 0, поскольку именно он запускает состояние окончания игры.

Теперь у вас должен быть полнофункциональный вариант перезапуска!

В следующей статье мы рассмотрим, как добавить взрывы к разрушенному игровому объекту!