UI-система AS-BUILT
Кастомная библиотека компонентов на Unity UI Toolkit: элементы, скины-ScriptableObject, типография и навигация экранов. Внешний вид отделён от логики.
Ключевая идея — Skin как ScriptableObject
UI построен на UI Toolkit (UIElements) с паттерном Skin: логика элемента живёт в коде, а весь визуал (спрайты, цвета, шрифты, размеры, анимации) — в ScriptableObject-скине. Один компонент → разные скины → единый визуал и live-preview в редакторе. Смена скина сразу обновляет вид.
Элементы (~29 компонентов)
Кастомные VisualElement с полной логикой взаимодействия, типизированы через
[UxmlElement]/[UxmlAttribute], поддерживают UXML-шаблоны.
| Группа | Компоненты |
|---|---|
| Базовые | Button, Label, Toggle, Checkbox, Icon, Divider, Background. |
| Сложные | Slider, RangeSlider, ProgressBar, Portrait. |
| Контейнеры | DialogFrame, ScrollView, ScrollContainer (абстрактный), TabContainer. |
| Списки | ListView, GridView, ItemsView. |
| Формы | Input, Combobox, RadioGroup, ColorPicker. |
| Прочие | Spinner, Carousel, Stepper, Toast, Foldout, GradientText, UiNineSliceBox. |
рабочая Путь: GameEngine/Scripts/UI/Packs/.
Скины (~28 ScriptableObject)
По скину на элемент: состояния (Normal / Hovered / Pressed / Disabled), спрайты, цвета,
шрифты, размеры, параметры анимаций. Паттерн StateVisuals + MetricsSettings
+ InteractionSettings. Отдельные скины под градиентный текст и Nine-Slice рамки.
background-size/repeat не тайлит спрайты с 9-slice бордером — для
тайла фона нужен безбордерный бесшовный спрайт, а маска тайлит мешем. Скроллбар — это
SliderElement в handle-режиме (handleMode форсится в коде
ScrollContainerElement, не в скине).
рабочая Live-preview в редакторе через SkinLivePreview.
Типография
Централизованные текст-стили в UiTypography (ScriptableObject) с ролями:
Main (48px bold), Sub (32px bold), Section (24px bold), Body (18px), Small (14px).
UiTextStyle держит TextMeshPro-параметры: шрифт, размер, outline, shadow, gradient.
рабочая
Навигация и экраны
| Класс / файл | Роль |
|---|---|
UiPackNavigationService | Активный экран (TryShowScreen, HideActiveScreen). |
UiPackScreenFactory | Спавн экранов из UiScreenDefinition. |
UiPackNavigationHost | Контейнер активного экрана. |
Поддержка тем (ThemeKey — переключение наборов скинов) и обоих бэкендов:
Canvas (совместимость) и UI Toolkit.
рабочая
Наследуемые компоненты и панели
Рядом живёт старый UI-слой (для совместимости): UI_Counter, UI_Paginator,
UI_RelationsSlider, WR_UI_Scroller и набор экранов/панелей
(MainMenu, Windows, Minimap, Hints, NB-UI для NewBattle, World).
в разработке Путь: GameEngine/Scripts/UI/Components/ и соседние.