← Назад к вопросам

Что такое canvas?

1.0 Junior🔥 281 комментариев
#UI#Unity Core

Комментарии (1)

🐱
deepseek-v3.2PrepBro AI6 апр. 2026 г.(ред.)

Ответ сгенерирован нейросетью и может содержать ошибки

Canvas в Unity: Визуальная система для UI элементов

Canvas — это фундаментальный компонент системы UI (User Interface) в Unity, представляющий собой абстрактное пространство или плоскость, на которой располагаются все UI элементы (такие как Image, Text, Button, Slider и т.д.).** Он выступает в роли «корневого» объекта для любого интерфейса, определяя способ их рендеринга, масштабирования и взаимодействия с камерой.

Основные функции и назначение Canvas

  • Контейнер для UI элементов: Все объекты из пространства UnityEngine.UI должны быть размещены внутри Canvas (или его дочернего элемента) для корректного отображения. Это обязательное условие.
  • Определение системы координат и рендеринга: Canvas задает собственную систему координат, независимую от мировых координат игры, что позволяет легко управлять позиционированием элементов через RectTransform.
  • Управление порядком отображения (Render Mode): Это ключевая характеристика Canvas, определяющая, как UI будет интегрироваться с трехмерным миром игры. Существует три основных режима:

Режимы рендеринга Canvas (Render Mode)

1. Screen Space - Overlay

UI рендерится непосредственно «поверх» всего остального изображения в игровом окне, игнорируя камеру и трехмерные объекты. Это наиболее распространенный режим для традиционных HUD, меню и диалоговых окон.

// Пример: Canvas в режиме Overlay автоматически масштабируется
// при изменении размеров игрового окна или разрешения экрана.
// Не требует назначения камеры для рендеринга.
  • Преимущества: Простота использования, не зависит от камеры, всегда виден сверху.
  • Недостатки: Не может быть частью трехмерной среды (например, не может быть загорожен объектом).

2. Screen Space - Camera

UI рендерится в заданной плоскости на фиксированном расстоянии от указанной камеры. Положение и масштаб Canvas зависят от параметров этой камеры (его плоскость перпендикулярна вектору взгляда камеры).

// Настройка Canvas на использование определенной камеры
Canvas canvas = GetComponent<Canvas>();
canvas.renderMode = RenderMode.ScreenSpaceCamera;
canvas.worldCamera = GameObject.Find("MainCamera").GetComponent<Camera>();
  • Преимущества: Позволяет применять эффекты камеры (например, размытие движения) к UI, может быть частью пост-обработки.
  • Недостатки: Может исчезнуть, если объект покинет поле зрения камеры или будет загорожен другим объектом в трехмерном пространстве.

3. World Space

Canvas становится полностью интерактивным трехмерным объектом в мировом пространстве с произвольным положением, поворотом и масштабом. Его можно разместить где угодно в сцене, как любой другой GameObject.

// Создание UI-знака или дисплея в мире игры
canvas.renderMode = RenderMode.WorldSpace;
canvas.transform.position = new Vector3(0, 2, 5); // Размещаем в мире
canvas.transform.localScale = new Vector3(0.01f, 0.01f, 0.01f); // Масштабируем
  • Преимущества: Полная интеграция с игровым миром (например, интерфейс на стене, дисплей на корабле).
  • Недостатки: Требует управления как трехмерным объектом, может быть загорожен, сложнее в позиционировании элементов.

Ключевые особенности и советы по использованию

  • RectTransform: Все UI элементы используют RectTransform (наследник Transform), который предоставляет дополнительные свойства для анкоров (anchors), отступов (pivot) и размеров, что критично для создания адаптивных интерфейсов.
  • Sorting Order: В режиме World Space или при нескольких Canvas можно управлять порядком их отображения через свойство sortOrder.
  • Performance: Несколько Canvas могут привести к дополнительным затратам на рендеринг (перерисовка всего Canvas при изменении любого его элемента). Для сложных UI иногда используют стратегию разделения на несколько Canvas для статических и динамических элементов.
  • Event System: Canvas является частью системы обработки событий (EventSystem). Он определяет, какие UI элементы могут получать события ввода (клики, наведение).

Canvas — это не просто контейнер, а сложная система, которая связывает логику интерфейса с графическим выводом. Понимание его режимов рендеринга и особенностей критически важно для создания эффективных, адаптивных и визуально интегрированных пользовательских интерфейсов в Unity.

Что такое canvas? | PrepBro