> Материал, который вы сейчас читаете, является [[Типы материалов на сайте|конспектом]].
Был представлен в Unity 4.6 (2014 год). Проверенная UI-система, но обновляется нечасто компанией Unity.
##### Основан на GameObject
Все элементы UI-интерфейса в Unity UI создаются и управляются как объекты в игровой сцене Unity. Это значит, что каждый элемент UI является игровым объектом (GameObject), который можно размещать, перемещать, масштабировать и изменять так же, как и любой другой объект в игре.
##### Разделение контента, стилей и поведения
1. **Контент (Canvas и GameObject)**:
- Элементы UI размещаются в Canvas и представлены как GameObject.
- Prefab используется для организации и повторного использования компонентов.
2. **Стилизация (RectTransform)**:
- Управление положением и размером через RectTransform.
- Стилизация через компоненты, такие как Image и Text.
3. **Поведение (C#)**:
- Логика и интерактивность реализуются через скрипты на C#.
- Обработка событий через Event System и компоненты, такие как Button и Toggle.
##### Такая себе производительность
При работе с Unity UI часто возникают проблемы, связанные с производительностью особенно при работе с большим количеством UI-элементов.
[[Такая себе производительность в системе Unity UI на Unity]]
##### Плюсы и минусы по сравнению с UI Toolkit
Смотреть [[UI Toolkit (UIElements) в Unity#Плюсы и минусы по сравнению с Unity UI|здесь]]
### Пример использования Unity UI:
Создание кнопки и обработка её нажатия:
```csharp
using UnityEngine;
using UnityEngine.UI;
public class ExampleUI : MonoBehaviour
{
public Canvas canvas;
void Start()
{
// Создание нового объекта Button
GameObject buttonObject = new GameObject("Button");
buttonObject.transform.SetParent(canvas.transform);
// Добавление RectTransform и настройка размеров
RectTransform rectTransform = buttonObject.AddComponent<RectTransform>();
rectTransform.sizeDelta = new Vector2(160, 30);
// Добавление компонента CanvasRenderer
buttonObject.AddComponent<CanvasRenderer>();
// Добавление компонента Button и настройка
Button button = buttonObject.AddComponent<Button>();
button.GetComponentInChildren<Text>().text = "Click Me";
// Добавление текста на кнопку
GameObject textObject = new GameObject("ButtonText");
textObject.transform.SetParent(buttonObject.transform);
Text text = textObject.AddComponent<Text>();
text.text = "Click Me";
text.font = Resources.GetBuiltinResource<Font>("Arial.ttf");
text.alignment = TextAnchor.MiddleCenter;
RectTransform textRectTransform = textObject.GetComponent<RectTransform>();
textRectTransform.sizeDelta = rectTransform.sizeDelta;
// Добавление обработчика нажатия на кнопку
button.onClick.AddListener(OnButtonClick);
}
void OnButtonClick()
{
Debug.Log("Button clicked!");
}
}
```