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

В чём разница между Screen Space и World Space?

1.0 Junior🔥 181 комментариев
#UI#Рендеринг и графика

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

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

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

Разница между Screen Space и World Space в Unity

В Unity Screen Space и World Space — это два фундаментальных пространства координат, которые определяют, как позиционируются и отображаются объекты в сцене. Их понимание критически важно для корректной работы UI, рендеринга, взаимодействий и многих других аспектов разработки.

World Space (Мировое пространство)

World Space — это глобальная, абсолютная система координат всей сцены. Это пространство, в котором существуют все игровые объекты (GameObjects), физика и окружение.

  • Координаты: Измеряются в мировых единицах (юнитах). Центр мира — точка (0, 0, 0).
  • Назначение: Используется для всего, что является частью игрового мира: персонажей, зданий, источников света, камер.
  • Преобразование: Координаты объекта в World Space остаются постоянными, независимо от того, как движется камера.
  • Пример: Если куб находится в позиции (5, 0, 10), он будет находиться там в мировом пространстве, пока его не переместят.
// Помещаем объект в конкретную точку мирового пространства
gameObject.transform.position = new Vector3(10f, 2f, -5f);
// Эта позиция фиксирована в мире

Screen Space (Экранное пространство)

Screen Space — это двумерная система координат, привязанная к пикселям экрана (или окна игры).

  • Координаты: Измеряются в пикселях. Начало координат (0, 0) по умолчанию находится в нижнем левом углу экрана. (Screen.width, Screen.height) — верхний правый угол.
  • Назначение: В первую очередь используется для пользовательского интерфейса (UI), рендеринга 2D-элементов поверх сцены, обработки ввода (например, позиции клика мыши или касания).
  • Преобразование: Координаты в Screen Space напрямую зависят от разрешения экрана и позиции камеры. Объект, зафиксированный в Screen Space (например, UI-панель), будет всегда отображаться в одном и том же месте экрана, даже если камера движется.
  • Пример: Текст "Здоровье: 100%" в верхнем левом углу экрана всегда будет там, куда бы ни смотрел игрок.
// Получаем позицию курсора мыши в экранных координатах
Vector3 mouseScreenPosition = Input.mousePosition;
// mouseScreenPosition.x от 0 до Screen.width, .y от 0 до Screen.height

// Преобразуем мировые координаты объекта в экранные (например, для отображения маркера над головой NPC)
Vector3 objectScreenPos = Camera.main.WorldToScreenPoint(enemyTransform.position);

Ключевые различия и практическое применение

АспектWorld SpaceScreen Space
Измерение3D (X, Y, Z) в юнитах2D (X, Y) в пикселях
ПривязкаК виртуальному миру сценыК пикселям экрана/окна игры
Зависимость от камерыНет. Объект существует независимо.Прямая. Координаты рассчитываются относительно камеры.
Типичное использованиеИгровые объекты, ландшафт, физика.Элементы UI (Canvas в режиме Screen Space - Overlay/Camera), пост-обработка.
Пример в Unity UICanvas с режимом рендера World Space (например, интерфейс в мире, как дисплей в машине).Canvas с режимом рендера Screen Space - Overlay (основной HUD).

Преобразование между пространствами

Одна из самых частых задач — конвертация координат. Для этого используются методы основной камеры:

// Screen Space -> World Space (например, луч (Ray) из мыши в мир)
Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
if (Physics.Raycast(ray, out RaycastHit hit))
{
    // hit.point - это Vector3 в World Space
    Debug.Log("Попали в объект в мировой позиции: " + hit.point);
}

// World Space -> Screen Space (например, чтобы UI-элемент следовал за объектом в мире)
Vector3 screenPosForUI = Camera.main.WorldToScreenPoint(worldObject.transform.position);
uiMarkerRectTransform.position = screenPosForUI;

Важный нюанс для UI: При создании Canvas в Unity можно выбрать один из трех Render Mode, которые определяют его пространство:

  1. Screen Space - Overlay: Рендерится поверх всего, в чистом Screen Space, без привязки к камере.
  2. Screen Space - Camera: Рендерится в заданной плоскости перед камерой, но координаты все еще экранные.
  3. World Space: Canvas становится обычным 3D-объектом в World Space, который можно размещать в сцене.

Вывод: World Space — это пространство игры, а Screen Space — пространство отображения. Умение различать их и правильно преобразовывать координаты между ними — основа для создания интерактивного интерфейса, систем прицеливания, мини-карт и многих других игровых механик.