Переписанный курс RTS Learning. Прежняя версия устарела и могла бы навредить. За прошедшие два-three года произошли значительные изменения в Unity и в навыках программирования. Поэтому курс полностью переделан.
Компоненты игры
Рассмотрим основные компоненты игры. Папка «Скрипты» содержит множество взаимодействующих файлов. Система управления включает:
- Перемещение юнитов: Юниты ходят, обходят здания.
- Постройка зданий: В игре нет отдельных моделей зданий – это упрощает код и курс.
- Динамический поиск пути: Юниты обходят препятствия.
- Производство в зданиях: Производство происходит в зданиях без очередей. Точки производства задаются вручную.
- Перемещение юнитов между точками: Перемещение юнитов между заданными точками работает корректно.
Важно: Пример не подходит для серьёзного продакшена. Некоторые принципы применимы, но общая архитектура компонентов должна быть изменена для больших проектов. При большом количестве объектов в сцене данная реализация будет неэффективна.
Менеджеры и классы
В игре присутствуют два основных менеджера:
- BuildManager: Управление постройкой.
- UnitManager: Управление юнитами.
Используются также:
- Класс Unit: Взаимодействие с юнитами, хранение их характеристик.
- Класс Building: Взаимодействие со зданиями, хранение характеристик зданий.
- Интерфейс ISelectable: Обеспечивает возможность выделения объектов (зданий и юнитов). Методы: OnSelect, OnDeselect.
- GameObjectSelector: Компонент для выделения объектов.
- Класс Product: Описание производимых в зданиях товаров (имя, цена, время производства). Настраивается в скрипте.
- Класс Game: Хранит общее состояние игры (деньги, состояние строительства и др.). На данный момент содержит минимальный функционал.
- Компонент TargetPoint: Отслеживает количество ссылающихся на него юнитов. Если ссылок нет, компонент удаляется.
- Компонент BuildingCollisionChecker: Проверяет коллизии при строительстве зданий. После размещения здания компонент удаляется.
- Компонент BuildingInfo: Информация о здании (например, цена). Может быть расширен.
Текстуры и иконки для интерфейса созданы упрощённо. Используется карта высот для текстурирования. Подробное рассмотрение компонентов будет в следующих видеоуроках. Обработка карты высот будет рассмотрена отдельно.