Ресурсы (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/), чтобы не загромождать проект.