- HUD (Heads-Up Display)
- Ключевые особенности класса HUD
- Родительский класс
- Связь HUD и Player Controller
- HUD и Unreal Motion Graphics (UMG)
- Минусы класса HUD
- Плюсы класса HUD
- Плюсы UMG (Unreal Motion Graphics)
- Настройки HUD
- Параметры Details
- Встроенные переменные
- Blueprint-функции класса HUD
- События (Event)
- Работа с хитбоксами (HitBox)
- Трансформация координат
- Отрисовка линий и примитивов (Draw)
- Возврат информации (Get)
Друзья, приветствую, с Вами Будуев Антон. В данной статье мы обсудим класс HUD в Unreal Engine (UE4, UE5), отображающий пользователю интерфейс поверх основного экрана игры.
Вскоре выйдет моя бесплатная книга по Blueprints для Unreal Engine в PDF формате. Как она выйдет, рекомендую её скачать, чтобы Вы детально изучили блюпринты Анрил Энджин.
HUD (Heads-Up Display)

HUD (Heads-Up Display) — это базовый класс системы отображения информации пользователю в Unreal Engine (UE4, UE5), предназначенный для отрисовки элементов интерфейса поверх игрового экрана.
HUD — это Актор, отвечающий за рендеринг элементов игрового интерфейса и отладочной информации на экран. Класс реализует инфраструктуру работы с холстами (Canvas, Debug Canvas), хранит и управляет списками хитбоксов, через которые осуществляются нажатия и наведения курсора, а также поддерживает систему отрисовки отладочного текста по объектам и глобальной отладочной информации. Это основная «точка входа» для создания пользовательского игрового интерфейса средствами C++ и Blueprint.
В итоге, класс HUD в Unreal Engine используется для:
- отображения пользовательского и системного интерфейса, такого как уровень здоровья, счёт, мини-карта и прочие элементы, накладываемые поверх игровой сцены;
- создания визуального слоя интерфейса без использования сложных UI-фреймворков, напрямую работая с холстом и графическими примитивами, такими как линии, текст, текстуры и фигуры;
- рендеринга отладочной информации и диагностических данных прямо в игровом окне, что значительно упрощает тестирование и анализ состояния игры в режиме реального времени;
- ручной реализации взаимодействия пользователя с элементами интерфейса через проверку хитбоксов и событий ввода (например, наведение курсора или клик мыши).
Перевод официальной справки: HUD — базовый класс для отрисовки всплывающего дисплея. Содержит холст (Canvas), а также холст для отладки (Debug Canvas), на которых можно рисовать примитивы. Включает список простых хитбоксов для обработки кликов мышью. Предусмотрен способ вывода отладочного текста. Предоставляет простые методы для вывода текста, текстур, прямоугольников и материалов, доступные также из блюпринтов.
В классе HUD центральную роль играют два объекта — Canvas и Debug Canvas. Именно на этих холстах осуществляется вся отрисовка элементов интерфейса, как в режиме обычной игры, так и при выводе отладочной информации.
Canvas обеспечивает рендеринг двумерных объектов, таких как линии, текст, текстуры, материалы и различные фигуры, прямо поверх игрового окна. Debug Canvas, в свою очередь, предназначен для вывода информации, связанной с отладкой и анализом состояния игры, зачастую накладываясь поверх остальных интерфейсных элементов для приоритета отображения (Debug Canvas не является таким же явным отдельным объектом, доступным для пользователя, как Canvas; отладочная отрисовка интегрирована глубже).
HUD даёт возможность реализовывать собственную логику управления интерактивными зонами. Для этого используются массивы, в которых хранятся информация о хитбоксах — например, прямоугольных областях на экране, соответствующих тем или иным элементам интерфейса. В момент отрисовки эти зоны заполняются в массив и затем проверяются на пересечение с позицией курсора мыши. При движении указателя или нажатии кнопок вызываются соответствующие методы, позволяющие определить, какая область была задействована, и выполнить нужное действие. Таким образом, вся система взаимодействия строится вручную через отслеживание событий ввода и проверку попадания курсора в заранее заданные области.
Встроенные методы класса позволяют разрабатывать пользовательские сценарии рисования графических примитивов, текста, текстур и материалов. Это реализовано не только на уровне C++, но и через блюпринты, расширяя возможности визуальной настройки интерфейса. Кроме того, система событий интегрирована в работу с хитбоксами: класс отслеживает появление курсора над активной областью, клики и отпускания, вызывая соответствующие методы по всем событиям взаимодействия.
Завершают архитектуру HUD функции, связанные с выводом и управлением отладочной информацией. Они позволяют в режиме реального времени отображать сведения о текущем Акторе, видеть диагностические данные об игровом процессе или состоянии сцены. Благодаря этому класс становится универсальным инструментом не только для построения пользовательских интерфейсов, но и для глубокого анализа, тестирования и обслуживания игровых систем на этапе разработки.
Ключевые особенности класса HUD
- Canvas Rendering — отрисовка элементов на игровом экране с помощью Canvas и Debug Canvas.
- Text Overlay — возможность ручной реализации вывода произвольного текста, в том числе отладочного, над объектами мира.
- HitBox Handling — возможность ручной реализации хитбоксов, с поддержкой клика и наведения на них.
- Primitive Drawing — методы для рисования линий, прямоугольников, текстур и материалов.
- Blueprint Integration — поддержка отрисовки элементов прямо из Blueprints.
- Post Render Actors — предоставляет возможность добавлять и управлять Акторами, которые требуют отрисовки поверх основного игрового кадра (после завершения стандартного цикла рендеринга). Например, для отрисовки полоски здоровья для объекта Актора. На текущий момент это практически не используемый и устаревший механизм, реализуемый в C++.
- Coordinate Transform — функции трансформации координат между экраном и мировым пространством (Project, Deproject).
- Debug Display — встроенная поддержка механизмов отображения отладочной информации для разных категорий (AI, Physics, Net и др.).
Родительский класс
Класс HUD наследуется от класса Actor (базовый класс для объектов, размещаемых на игровом уровне), расширяя его базовую логику функционалом рендеринга элементов игрового интерфейса поверх основного экрана игры.

Связь HUD и Player Controller
Связь между классом HUD и Player Controller в Unreal Engine реализуется через прямую ссылку: каждый экземпляр HUD хранит указатель на конкретный Player Controller, которому он принадлежит. Эта связь устанавливается автоматически движком сразу после инициализации компонентов, что делает HUD естественной визуальной частью логики игрока.
Через указатель Player Owner (Get Owning Player Controller) HUD получает доступ к ключевым данным: состоянию управляемого персонажа (Pawn), параметрам камеры, входящим командам от пользователя и другой информации, необходимой для корректного отображения интерфейса. Таким образом, Player Controller выступает как посредник, обеспечивающий связь между визуальным слоем (HUD) и игровой логикой.
Хотя HUD сам не обрабатывает ввод, он может реагировать на события, передаваемые через Player Controller, такие как нажатия мыши, клики или тач-ввод. Кроме того, каждый HUD уникален для своего Player Controller, что особенно важно в мультиплеерных и Split-Screen режимах, где требуется отображать индивидуальный интерфейс для каждого игрока.
Такая архитектура позволяет строить изолированные и независимые пользовательские интерфейсы для разных участников одной игровой сессии, сохраняя при этом чёткую иерархию управления и связь между визуальным слоем и игровой логикой.
HUD и Unreal Motion Graphics (UMG)
Ранее в Unreal Engine пользовательский интерфейс создавался непосредственно через класс HUD, где разработчики вручную рисовали графические примитивы, текст и текстуры на экране. Такой подход подходил лишь для простых статических элементов или вывода отладочной информации.
Однако по мере усложнения требований к интерфейсам — таким как адаптация под разные разрешения, поддержка анимаций, удобство локализации и масштабируемость — стало ясно, что ручная отрисовка на Canvas не соответствует современным стандартам. Проблемы включали необходимость ручного расчёта координат, сложности с реализацией интерактивности, отсутствие автоматической адаптации под устройства и плохую интеграцию с другими системами движка.
В ответ на эти вызовы в Unreal Engine была внедрена система Unreal Motion Graphics (UMG) — полноценный фреймворк для создания пользовательских интерфейсов. UMG предоставляет мощный визуальный редактор, поддерживает комплексные анимации, автоматическое масштабирование под разные устройства, стили и шаблоны, а также удобную работу с пользовательским вводом.
Сегодня класс HUD в основном используется для отладки, тестирования и прототипирования. Всё, что связано с пользовательским игровым интерфейсом — от главного меню до инвентаря и HUD игрока — рекомендуется реализовывать через UMG , который считается признанным стандартом для современной разработки в Unreal Engine.
Минусы класса HUD
- Ручное позиционирование и масштабирование элементов интерфейса, что усложняет создание адаптивных решений под разные экраны и разрешения.
- Отсутствие поддержки сложных анимаций, динамических макетов и готовых интерактивных виджетов.
- Практически полное отсутствие интеграции с современными системами локализации, управления стилями и глобального дизайна интерфейсов.
- Необходимость ручной реализации всей логики взаимодействия и компоновки, что увеличивает объём кода и риск ошибок.
- Сложности с созданием адаптивных и кроссплатформенных интерфейсов, так как нет встроенной системы автоматического расчёта размеров и расположения.
- Нет нативной поддержки обработки событий ввода для сложных элементов, таких как меню, кнопки, скроллбары и другие интерактивные компоненты.
- Почти полное отсутствие визуальных инструментов для проектирования и прототипирования — вся разработка происходит в коде.
- Устаревший подход, который сегодня считается непрактичным для создания полноценных пользовательских интерфейсов, за исключением задач отладки и технического прототипирования.
Плюсы класса HUD
Несмотря на то, что на данный момент для создания сложных интерфейсов вывод интерфейса через прорисовку в классе HUD устарел, однако этот метод по-прежнему полезен для отладки приложений и решения специфических задач, например, таких как:
- простой и минималистичный HUD для игр, где нужен только счет или таймер.
- пользовательская 2D отрисовка, когда нужны специфические эффекты или визуализации, сложные для системы UMG (например, динамически генерируемые карты, графики, сложные геометрические фигуры).
- отладочная информация (данный пункт остается его основной сильной стороной).
Плюсы UMG (Unreal Motion Graphics)
- Встроенный визуальный редактор, позволяющий быстро создавать и тестировать интерфейсы без написания кода.
- Полная поддержка анимаций, переходов и эффектов — всё это можно создавать прямо в редакторе.
- Автоматическое масштабирование и адаптация под разные разрешения, благодаря гибкой системе анкеров, шкал и DPI-адаптации.
- Глубокая интеграция с системами локализации, управления стилями, темами и шаблонами, что позволяет легко переключаться между языками и оформлениями.
- Поддержка всех типов ввода: мышь, клавиатура, геймпад, сенсорный экран — с простыми и понятными хуками событий.
- Простая привязка игровой логики к интерфейсу через Blueprints или C++, без необходимости ручной отрисовки и управления состоянием.
- Возможность быстрого изменения и тестирования UI без перекомпиляции или переписывания кода рендера.
- Современная, гибкая и мощная система, которая соответствует требованиям к интерфейсам мобильных и десктопных платформ, высокой динамике и интерактивности.
Настройки HUD
Параметры Details
В меню Details содержатся как унаследованные параметры от класса Actor, так и настройки, характерные для разбираемого класса. Details для Actor мы уже разбирали в соответствующей статье про класс Акторов. Сейчас же сконцентрируемся только на настройках HUD.

- Show HUD — определяет, должен ли данный HUD быть отображён на экране. Если значение установлено в True, элементы интерфейса будут выводиться на экран игрока.
- Enable Debug Text Shadow — определяет, будет ли отбрасываться тень от отладочных строк (Debug Strings), которые выводятся на экран с помощью HUD.
Встроенные переменные

- Player Owner — хранит указатель (ссылку) на объект Player Controller. Данное свойство определяет, какой контроллер игрока владеет экземпляром этого HUD.
- Lost Focus Paused — возвращает значение True, если игра была автоматически приостановлена, когда пользователь переключился из окна приложения на другое или система утратила активное окно.
- Show HUD — определяет, должен ли данный HUD быть отображён на экране. Если значение установлено в True, элементы интерфейса будут выводиться на экран игрока.
- Show Debug Info — отвечает за отображение отладочной информации для текущего View Target, используя его метод DisplayDebug(). Когда это свойство установлено в значение True, HUD инициирует дополнительный вывод подробных данных о состоянии игрового объекта или сцены, обычно служащих для целей анализа и отладки в ходе разработки.
- Show Hit Box Debug Info — указывает, должна ли на экране отображаться отладочная информация о хитбоксах HUD.
- Show Overlays — определяет, должны ли на HUD выводиться специальные оверлеи (Overlays) для Акторов.
- Enable Debug Text Shadow — определяет, будет ли отбрасываться тень от отладочных строк (Debug Strings), которые выводятся на экран с помощью HUD.
Blueprint-функции класса HUD
События (Event)

- Event Receive Draw HUD — вызывается при необходимости выполнить пользовательскую отрисовку элементов HUD на экране. Возвращает параметры размера экрана — ширину (Size X) и высоту (Size Y) в пикселях. Данное событие специально предназначено для того, чтобы разработчик мог реализовать свою логику рисования HUD средствами Blueprints. Все команды рисования должны вызываться прямо внутри этого события, потому что объект Canvas, используемый для вывода на экран, валиден только в момент исполнения данного события. Вызовы рендера за пределами этого события (например, после задержек или в следующих тиках) не будут работать корректно.
- Event Hit Box Begin Cursor Over — вызывается, когда курсор мыши или сенсорное прикосновение впервые попадает на хитбокс HUD с указанным именем (Box Name).
- Event Hit Box End Cursor Over — вызывается, когда курсор мыши или сенсорное касание покидает область хитбокса на HUD. В качестве аргумента передаёт имя этого хитбокса (Box Name).
- Event Hit Box Click — вызывается, когда пользователь кликает по хитбоксу, размещённому на HUD. В качестве аргумента передаёт имя этого хитбокса (Box Name).
- Event Hit Box Release — вызывается, когда пользователь отпускает кнопку мыши (или завершает касание) над ранее нажатым хитбоксом HUD. В качестве аргумента передаёт имя этого хитбокса (Box Name).
Работа с хитбоксами (HitBox)

- Add Hit Box — добавляет интерактивный хитбокс (Hit Box) на HUD для обработки пользовательского ввода (наведение или нажатие).
Трансформация координат

- Project — преобразует 3D-вектор в мировых координатах (Location) в 2D-координаты экрана.
- Deproject — преобразует экранные координаты (2D) в мировое пространство (3D).
Отрисовка линий и примитивов (Draw)

- DrawLine — рисует двухмерную линию между заданными точками с указанным цветом и толщиной.
- Draw Material — рисует прямоугольник с выбранным материалом.
- Draw Material Simple — рисует прямоугольник с заданным материалом. Автоматически растягивает весь материал на указанный экранный прямоугольник и не требует ручного задания UV-координат.
- Draw Material Triangle — рисует произвольный треугольник с материалом, задавая позиции, UV-координаты и отдельные цвета для каждой вершины.
- Draw Rect — рисует прямоугольник (квадрат) без текстуры, заполненный указанным цветом.
- Draw Text — выводит текстовую строку.
- Draw Texture — рисует прямоугольник с заданной текстурой.
- Draw Texture Simple — выводит всю текстуру целиком с соотношением 1:1 (каждый пиксель текстуры соответствует одному пикселю HUD).
Возврат информации (Get)

- Get Actors In Selection Rectangle — находит и возвращает список Акторов определённого класса, находящихся внутри (полностью или частично — по выбору) прямоугольника, заданного на экране пользователем (например, при выделении объектов мышью).
- Get Owning Pawn — возвращает указатель (ссылку) на объект Pawn, которым управляет Player Controller, связанный с этим HUD.
- Get Owning Player Controller — возвращает указатель (ссылку) на объект Player Controller, связанный с этим HUD.
- Get Text Size — возвращает ширину и высоту текстовой строки.
Совет. Вскоре выйдет моя бесплатная книга по Blueprints для Unreal Engine в PDF формате. Как она выйдет, рекомендую её скачать, чтобы Вы детально изучили блюпринты Анрил Энджин.