Стратегия в Unity: Переработанный курс RTS

Переписанный курс RTS Learning. Прежняя версия устарела и могла бы навредить. За прошедшие два-three года произошли значительные изменения в Unity и в навыках программирования. Поэтому курс полностью переделан.

Компоненты игры

Рассмотрим основные компоненты игры. Папка «Скрипты» содержит множество взаимодействующих файлов. Система управления включает:

  • Перемещение юнитов: Юниты ходят, обходят здания.
  • Постройка зданий: В игре нет отдельных моделей зданий – это упрощает код и курс.
  • Динамический поиск пути: Юниты обходят препятствия.
  • Производство в зданиях: Производство происходит в зданиях без очередей. Точки производства задаются вручную.
  • Перемещение юнитов между точками: Перемещение юнитов между заданными точками работает корректно.

Важно: Пример не подходит для серьёзного продакшена. Некоторые принципы применимы, но общая архитектура компонентов должна быть изменена для больших проектов. При большом количестве объектов в сцене данная реализация будет неэффективна.

Менеджеры и классы

В игре присутствуют два основных менеджера:

  • BuildManager: Управление постройкой.
  • UnitManager: Управление юнитами.

Используются также:

  • Класс Unit: Взаимодействие с юнитами, хранение их характеристик.
  • Класс Building: Взаимодействие со зданиями, хранение характеристик зданий.
  • Интерфейс ISelectable: Обеспечивает возможность выделения объектов (зданий и юнитов). Методы: OnSelect, OnDeselect.
  • GameObjectSelector: Компонент для выделения объектов.
  • Класс Product: Описание производимых в зданиях товаров (имя, цена, время производства). Настраивается в скрипте.
  • Класс Game: Хранит общее состояние игры (деньги, состояние строительства и др.). На данный момент содержит минимальный функционал.
  • Компонент TargetPoint: Отслеживает количество ссылающихся на него юнитов. Если ссылок нет, компонент удаляется.
  • Компонент BuildingCollisionChecker: Проверяет коллизии при строительстве зданий. После размещения здания компонент удаляется.
  • Компонент BuildingInfo: Информация о здании (например, цена). Может быть расширен.

Текстуры и иконки для интерфейса созданы упрощённо. Используется карта высот для текстурирования. Подробное рассмотрение компонентов будет в следующих видеоуроках. Обработка карты высот будет рассмотрена отдельно.

Что будем искать? Например,программа