> Материал, который вы сейчас читаете, является [[Типы материалов на сайте|конспектом]]. Был представлен в 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!"); } } ```