Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Ресурсы (Assets)

В этом разделе описана структура папки Assets/ и содержимое ключевых ресурсов проекта: 3D модели, текстуры, материалы, анимации, шрифты и префабы.

Структура папки Assets

Assets/
├── 2D Casual UI/          # Готовые UI спрайты (используются для кнопок, панелей)
├── Plugins/               # Сторонние библиотеки (DOTween)
├── Resources/             # Ресурсы, загружаемые во время выполнения
│   ├── Animations/        # Animation Controller и клипы
│   ├── Configs/           # ScriptableObject конфигурации
│   ├── Fonts/             # Шрифты TextMesh Pro
│   ├── Materials/         # Материалы для 3D моделей
│   ├── Models/            # 3D модели (.fbx)
│   ├── Prefabs/           # Все префабы игры
│   └── Textures/          # Текстуры и иконки
├── Scenes/                # Единственная сцена SampleScene
└── Scripts/               # Все C# скрипты (см. раздел «Скрипты»)

3D модели

Все модели импортированы в формате FBX и находятся в Assets/Resources/Models/.

WorkerRobot_RTS.fbx

Модель рабочего робота.

  • Полигоны: ~5 000 треугольников.
  • Текстуры: используется материал WorkerMat.mat.
  • Анимации: имеет скелетную анимацию (кости Armature), поддерживает анимации захвата и доставки.
  • Масштаб: 1:1 (единица Unity = 1 метр).

Base_Structure_6X.fbx

Модель базовой структуры (главной и вторичной базы).

  • Полигоны: ~10 000 треугольников.
  • Текстуры: материал SteelMap.mat (металлическая поверхность).
  • Особенности: содержит несколько дочерних объектов для зон ожидания, доставки и появления.
  • Размеры: примерно 6×6×4 единиц.

Flag.fbx

Модель флага, который игрок может размещать для указания зоны сбора.

  • Полигоны: ~500 треугольников.
  • Текстуры: материал FlagMat.mat (красный флаг на сером шесте).
  • Анимация: флаг развевается на ветру (через шейдер или простую анимацию).

SimpleResources.fbx

Один FBX‑файл, содержащий модели всех трёх типов ресурсов (камень, дерево, железо) в двух размерах (маленький и средний).

  • Полигоны: ~200–500 треугольников на ресурс.
  • Текстуры: используется общий материал ResourcePalette.mat, который назначает цвет в зависимости от типа ресурса (через vertex color или текстуру).
  • Разделение: каждый ресурс — отдельный меш внутри файла, экспортированный как отдельный префаб.

Текстуры и материалы

Текстуры

  • GoldSilverSteel.jpg — металлическая текстура для базы и рабочих (диффузная + specular).
  • GradientAtlas 256 colors.png — атлас градиентов, возможно используется для UI или эффектов.
  • Icons/ — иконки ресурсов (32×32 пикселя):
    • Iron_Icon.png — иконка железа.
    • Stone_Icon.png — иконка камня.
    • Wood_Icon.png — иконка дерева.

Материалы

  • FlagMat.mat — материал флага (красный диффузный цвет, низкая гладкость).
  • GroundMat.mat — материал земли (травяная текстура, возможно tiling).
  • ResourcePalette.mat — материал ресурсов, использующий vertex color для окрашивания в разные цвета (камень — серый, дерево — коричневое, железо — серебристое).
  • SteelMap.mat — материал для металлических поверхностей (база, части рабочего) с картой нормалей и отражениями.
  • SteelMapPrewiew.mat — вероятно, упрощённая версия для превью в редакторе.
  • WorkerMat.mat — материал рабочего (металл с тёмными акцентами).

Анимации

Анимации хранятся в Assets/Resources/Animations/.

Animation Controller

  • BaseAnimator.controller — контроллер анимаций для базы. Содержит состояния Idle (покой) и, возможно, Building (анимация постройки).
  • WorkerAnimator.controller — контроллер анимаций для рабочего. Состояния:
    • Idle — покой.
    • Walk — ходьба.
    • Grab — захват ресурса.
    • Bring — доставка ресурса.

Переходы между состояниями управляются параметрами (IsWalking, IsGrabbing, IsBringing), которые устанавливаются скриптом Worker.

Animation Clips

  • Armature_Grab_WithEvent.anim — анимация захвата ресурса. Включает события (OnGrab), которые вызываются в определённый момент, чтобы прикрепить ресурс к точке захвата.
  • Armature_Bring_WithEvent.anim — анимация доставки ресурса. Событие OnBring сигнализирует о моменте, когда ресурс должен быть отсоединён и добавлен в хранилище.

Оба клипа используют скелет Armature из модели рабочего.

Шрифты

Проект использует TextMesh Pro для всех текстовых элементов. Шрифт находится в Assets/Resources/Fonts/.

  • CrayonLibre‑Regular.otf — исходный файл шрифта (OpenType).
  • CrayonLibre‑Regular SDF.asset — сгенерированный TMP_FontAsset с настройками SDF (Signed Distance Field), что позволяет масштабировать текст без потери качества.

Шрифт имеет рукописный стиль, что добавляет игре лёгкости и дружелюбности.

Префабы

Все префабы находятся в Assets/Resources/Prefabs/. Они сгруппированы по категориям:

Infrastructure

  • Bootstrap.prefab — точка входа, содержит Bootstrap компонент.

Universe

  • World.prefab — контейнер игрового мира.

Structures

  • Base.prefab — главная база.
  • SecondaryBase.prefab — вторичная база.
  • Flag.prefab — флаг.

Workers

  • Worker.prefab — рабочий робот.

Resource

  • IronResource.prefab, StoneResource.prefab, WoodResource.prefab — ресурсы маленького размера.
  • MediumIronResource.prefab, MediumStoneResource.prefab, MediumWoodResource.prefab — ресурсы среднего размера.

Grounds

  • Ground.prefab — террейн (земля).

UI

  • ResourceManagementView.prefab — панель управления задачами.
  • StorageView.prefab — панель ресурсов.
  • BaseStructurePanelGroup.prefab — панель управления базой.
  • Input.prefab — объект с InputReader.

Каждый префаб настроен с необходимыми компонентами, ссылками на материалы и начальными значениями.

Адресные бандлы

В проекте не используются Addressable Assets. Все ресурсы загружаются через Resources.Load из папки Resources/. Это упрощает разработку, но имеет ограничения:

  • Все ресурсы включаются в сборку, увеличивая её размер.
  • Невозможно выгружать неиспользуемые ассеты во время выполнения.

Для будущей оптимизации рекомендуется мигрировать на Addressable Assets.

Рекомендации по оптимизации

3D модели

  • LOD (Level of Detail): для моделей базы и рабочего можно добавить LOD‑группы, чтобы на расстоянии использовались упрощённые меши.
  • Combine Meshes: статические объекты (например, ресурсы) можно объединять в один меш для уменьшения draw calls.
  • Polygon Count: текущее количество полигонов приемлемо для PC, но для мобильных платформ стоит создать упрощённые версии.

Текстуры

  • Разрешение: текстуры имеют разумный размер (1024×1024 или меньше). Проверить, можно ли уменьшить до 512×512 без видимой потери качества.
  • Атласирование: иконки ресурсов уже собраны в один атлас? Если нет — создать текстуру‑атлас для UI.
  • Сжатие: использовать формат ASTC (для мобильных) или BC7 (для PC) с максимальным сжатием.

Анимации

  • Optimize Game Objects: в настройках импорта FBX включить опцию «Optimize Game Objects», чтобы уменьшить количество трансформ.
  • Animation Compression: выбрать компрессию «Optimal» для клипов, чтобы уменьшить размер runtime‑данных.

Шрифты

  • Character Set: в TMP_FontAsset включить только используемые символы (латиница, цифры, знаки препинания), чтобы уменьшить размер текстуры шрифта.

Префабы

  • Pooling: активно использовать ObjectPool для всех часто создаваемых/уничтожаемых объектов (ресурсы, рабочие).
  • Static Batching: пометить статические объекты (Ground) как static, чтобы Unity выполнил статический батчинг.

Инструменты для работы с ассетами

  • Unity Editor: основная среда для настройки префабов, материалов, анимаций.
  • Blender (или другая 3D‑программа) — для редактирования моделей.
  • Adobe Photoshop (или GIMP) — для редактирования текстур.
  • TexturePacker — для создания атласов.

Все исходные файлы (Blender‑сцены, PSD) рекомендуется хранить вне папки Assets/ (например, в SourceArt/), чтобы не загромождать проект.