Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Unity_в_действии_Джозеф_Хокинг_Рус.pdf
Скачиваний:
83
Добавлен:
21.06.2022
Размер:
26.33 Mб
Скачать

136      Глава 5. Игра Memory на основе новой 2D-функциональности

ошибке; на консоли появится информация о том, что сообщение уходит «в никуда». Ведь метод Restart() в сценарии SceneController пока отсутствует. Давайте исправим этот недостаток.

5.5.2. Вызов метода LoadLevel в сценарии SceneController

Связанный с кнопкой метод SendMessage() пытается вызвать метод Restart() в сценарии SceneController, поэтому добавьте туда код следующего листинга.

Листинг 5.14. Код перезагрузки игрового уровня в сценарии SceneController

...

public void Restart() {

Application.LoadLevel("Scene"); ¬ Эта команда загружает ресурс scene.

}

...

Как видите, единственным действием метода Restart() является вызов метода Application.LoadLevel(). Эта команда загружает такой ресурс, как сохраненная сцена (то есть файл, появившийся после команды Save Scene). Передайте в метод имя сцены, которую вы хотите загрузить; лично я сохранил ее под именем Scene, если же вы использовали другое имя, укажите его.

Щелкните на кнопке Play и посмотрите, что получилось. Откройте несколько карт и добейтесь нескольких совпадений; если после этого щелкнуть на кнопке Reset, игра начнется сначала, со скрытыми картами и нулевым счетом. Именно то, что и требовалось!

Как следует из имени метода LoadLevel(), он может загружать различные игровые уровни. Но что происходит в момент загрузки и почему игра при этом перезагружается? Просто все, что находилось на текущем уровне (все объекты сцены и присоединенные к ним сценарии), стирается из памяти, и загружается новая сцена. Так как в данном случае ее роль играет сцена, сохраненная перед началом игры, все удаляется из памяти и загружается с нуля.

СОВЕТ  Можно пометить объекты, которые вы не хотите удалять из памяти при перезагрузке уровня. В Unity есть метод DontDestroyOnLoad(), сохраняющий объекты в разных сценах; вы увидите его как часть архитектуры кода в следующих главах.

Мы успешно создали еще одну игру! Разумеется, о «готовности» игры можно говорить только в относительном смысле — вы всегда можете добавлять новые функцио­ нальные возможности. Но все, что было намечено в начальном плане, мы реализовали. Многие концепции двухмерной графики применимы и к трехмерным играм, особенно связанные с проверкой состояния игры и с загрузкой игровых уровней. Пришло время изучить новую тему и выполнить новый проект.

5.6. Заключение

Для отображения двухмерной графики в Unity применяется ортогональная камера.

5.6. Заключение      137

Для отображения графики пиксел в пиксел размер камеры должен быть равен половине высоты экрана.

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

Новые изображения спрайтов можно загружать программно.

Текст для пользовательского интерфейса можно создавать с помощью трехмерных текстовых объектов.

Загрузка игровых уровней позволяет перезагрузить сцену.