> Материал, который вы сейчас читаете, является [[Типы материалов на сайте|конспектом]].
Релевантные статьи:
- Habr.com -> [Unity UI Toolkit: MVVM ннада?](https://habr.com/ru/articles/689134/)
- Habr.com -> [Unity: Как реализовать бесконечный ListView с изображениями?](https://habr.com/ru/articles/746782/)
- Onewheelstudio.com -> [State of UI in Unity - UI Toolkit](https://onewheelstudio.com/blog/2022/10/28/state-of-ui-tool-kit)
Конспекты:
- [[Сравнение UI-систем в Unity]]
- [[Какие компоненты доступны в UI Toolkit?]]
`UI Toolkit` (ранее известный как UIElements) был впервые представлен в Unity 2019.1 (2019 год) как экспериментальная функция, а затем стал более стабильным и функциональным в последующих версиях.
`UI Toolkit` активно разрабатывается компанией Unity как новая альтернатива `Unity UI`. Однако, на момент 27.06.24 дело ещё не доведено до конца и поэтому в ней нет некоторых функций, которые есть в `Unity UI`.
На сайте Unity в формате [презентации](https://unity.com/ru/features/ui-toolkit) рассказывается о UI Toolkit.
##### Основывается на веб-технологиях
UI Toolkit использует концепции и технологии, знакомые из веб-разработки.
UI-интерфейс состоит из
- **UXML (Unity Extensible Markup Language)**: Это язык разметки, похожий на HTML, который используется для определения структуры и содержимого пользовательского интерфейса.
- **USS (Unity Style Sheets)**: Это язык стилей, аналогичный CSS, который используется для стилизации элементов интерфейса, определённых в UXML.
Какая система [[Лейаут (layout) или Компоновка|компоновки (layout)]] используется:
- **Yoga Layout**: Это движок для компоновки, который используется в UI Toolkit и поддерживает концепции FlexBox, популярные в веб-разработке.
- **FlexBox**: Модель компоновки, которая позволяет легко распределять пространство между элементами интерфейса и выравнивать их в контейнере, используется через Yoga Layout в UI Toolkit.
##### Разделение контента, стилей и поведения
Каждый аспект пользовательского интерфейса (UI) отделен друг от друга и управляется независимо.
- **Контент (UXML)**: Определяет элементы и их иерархию в пользовательском интерфейсе.
- **Стилизация (USS)**: Определяет внешний вид элементов (цвета, шрифты, отступы и т.д.).
- **Поведение (C#)**: Определяет логику и интерактивность элементов интерфейса, написанную на C#.
##### Высокая производительность
UI Toolkit оптимизирован для работы с большим количеством UI-элементов, что позволяет создавать сложные и интерактивные интерфейсы без значительного влияния на производительность игры.
[[Высокая производительность в UI Toolkit на Unity]]
##### Модульность и повторное использование кода
С помощью UI Toolkit можно создавать модульные UI-компоненты, которые можно легко повторно использовать в разных частях проекта, что экономит время и усилия на разработку.
##### Плюсы и минусы по сравнению с Unity UI
Плюсы:
- Позволяет создавать UI-элементы без использования текстур. Не нужно создавать и импортировать изображения из графических редакторов (к примеру, Figma). Это значительно сокращает затрачиваемое на переход между инструментами, а также снижает общий объем памяти и размер сборки.
- UI Toolkit позволяет разрабатывать UI-интерфейсы для [[Editor UI и Runtime UI|Editor UI]]
Минусы:
- Пока что нет встроенной поддержки освещения, визуальных эффектов (VFX) и пользовательских шейдеров (custom shaders) для элементов интерфейса.
- UI Toolkit не поддерживает взаимодействие с событиями в мировом пространстве (например, клики по элементам интерфейса, находящимся в игровом мире).
- Меньше документации и примеров использования по сравнению с Unity UI,
- [[Использование строк для поиска и идентификации UI-элементов в UI Toolkit| Использование строк для поиска и идентификации UI-элементов]] (Компания Unity обещает изменить подход)
- В сети жалуются, что некоторая поддержка анимации есть, но не полная (не углублялся в данный вопрос).