Друзья, приветствую, с Вами Будуев Антон. В данной статье мы обсудим Input Mapping Context, один из важнейших элементов улучшенной системы ввода Enhanced Input в Unreal Engine 5, представляющий ассет контекста сопоставления ввода в UE5.
Но прежде чем разбираться с контекстом сопоставления ввода, рекомендую изучить более детально саму систему улучшенного ввода UE5: Enhanced Input.
Вскоре выйдет моя бесплатная книга по Blueprints для Unreal Engine в PDF формате. Как она выйдет, рекомендую её скачать, чтобы Вы детально изучили блюпринты Анрил Энджин.
Input Mapping Context

Input Mapping Context (контекст сопоставления ввода) — это один из ключевых элементов системы Enhanced Input в Unreal Engine 5, который представляет собой ассет, содержащий набор правил, определяющих, какие Input Actions (действия пользователя) с какими конкретно клавишами, кнопками или осями связаны и какие при этом применяются особенности обработки ввода.
Перевод официальной справки: Input Mapping Context — это коллекция сопоставлений «клавиша — действие» (Key to Action Mappings) для конкретного контекста ввода. Определяет, какие клавиши, кнопки или другие источники ввода вызывают определённые Input Actions в зависимости от текущего контекста (ситуации в игре).
В Unreal Engine использование системы Enhanced Input и ассетов Input Mapping Context позволяет гибко управлять действиями, которые выполняет одна и та же клавиша в разных игровых ситуациях. Это обеспечивает максимально интуитивное и удобное взаимодействие для игрока, когда значение конкретной клавиши может динамически меняться в зависимости от текущего режима персонажа.
Рассмотрим пример с клавишей пробел (Space): предположим, у персонажа есть два ключевых режима — «свободное перемещение» и «боевой режим». Для каждого из них создаются отдельные ассеты Input Mapping Context:
- IMC_Move (контекст перемещения): здесь нажатие пробела (Space) связано с действием «Прыжок» (IA_Jump) — персонаж прыгает.
- IMC_Battle (контекст боя): здесь пробел (Space) уже вызывает действие «Блок» (IA_Block) — персонаж поднимает щит или ставит блок для защиты.
Когда персонаж просто идёт или исследует мир, активен контекст IMC_Move: нажатие пробела вызывает «Прыжок», что соответствует стандартному ожиданию игрока. Однако, при переходе в боевой режим система динамически активирует IMC_Battle — теперь это же нажатие пробела не выполняет прыжок, а включает «Блок» для защиты от атак.
Благодаря приоритетам и возможности в любой момент добавить или удалить нужный Mapping Context (как через Blueprint, так и в C++), избегаются конфликты управления и сложной ручной реализации смены действия для каждой кнопки. Такой подход даёт разработчику абсолютную свободу в построении продвинутых схем управления: например, при открытии меню, езде на транспорте или в иных игровых ситуациях любая клавиша может приобретать новый смысл — быстро, безопасно и прозрачно для логики проекта.
Внутренняя структура ассета контекста сопоставления ввода
Input Mapping Context внутри содержит иерархическую структуру, где на первом уровне указывается список всех необходимых действий (Input Actions). На втором уровне для каждого действия указывается набор конкретных пользовательских вводов (клавиш, стиков, осей мыши) которые будут вызывать это действие. И на третьем уровне для каждого указанного пользовательского ввода настраиваются параметры (триггеры, модификаторы).

- Первый уровень: Input Mapping Context содержит список Input Actions (абстрактных событий, таких как IA_Jump, IA_Attack) — это вершины дерева структуры Mapping Context.
- Второй уровень: каждый Input Action содержит список пользовательских вводов (клавиш, стиков, осей мыши).
- Третий уровень: каждый пользовательский ввод содержит по 4 настройки:
- Triggers — набор условий, которые должны быть выполнены, чтобы ввод действительно вызывал срабатывание действия. Например: удержание (Hold) или нажатие (Pressed).
- Modifiers — набор фильтров/преобразователей, которые применяются к сырым значениям ввода перед их поступлением в систему. Например: мёртвая зона для стиков (Dead Zone) или инверсия оси.
- Setting Behavior — наследование или переопределения настроек:
- Inherit Settings from Action — использовать параметры, определённые у Input Action, не задавая никаких локальных изменений. Позволяет централизованно управлять поведением всего действия.
- Override Settings — полностью переопределить настройки. Используются параметры, определённые на этом уровне (Player Mappable Key Settings), игнорируя те, что заданы в Input Action. Это нужно для индивидуальной настройки поведения конкретного сочетания (например, для особой кнопки или клавиши).
- Ignore Settings — игнорировать любые настройки.
- Player Mappable Key Settings — подключение объекта настроек для текущего пользовательского ввода. Доступно если Setting Behavior = Override Settings.
Как создать и использовать Input Mapping Context

- Откройте Content Browser, перейдите в нужную папку проекта, щёлкните правой кнопкой мыши по свободной области. В появившемся меню выберите Input / Input Mapping Context. Задайте ассету понятное имя, соответствующее его назначению (IMC_Player, IMC_Vehicle, IMC_Menu).
- Откройте Input Mapping Context для редактирования, дважды кликнув по созданному ассету. В секции Mappings добавьте новые строки: в каждой строке выберите Input Action (например, IA_Jump).
- Укажите конкретную клавишу, кнопку или ось для добавленного действия на предыдущем шаге (например, Space).
- При необходимости примените триггеры (Triggers) и модификаторы (Modifiers), чтобы задать особое поведение (например, только при двойном нажатии, или с учётом мёртвой зоны для стика).
Blueprint-функции управления Input Mapping Context
Разные InputMappingContext можно как динамически добавлять / удалять непосредственно по ходу игры, так менять их приоритет друг перед другом. Этим достигается гибкая, модульная и адаптивная система управления в игре.
Данные действия производятся несколькими функциями. Рассмотрим их подробнее.

- Add Mapping Context — добавляет указанный InputMappingContext (контекст сопоставления ввода) для выбранного игрока/субсистемы. Позволяет динамически переключать схемы управления в зависимости от ситуации.
- Target — ссылка на объект (Enhanced Input Local Player Subsystem), для которого удаляется контекст сопоставления. В Blueprint возвращается функцией Get Enhanced Input Local Player Subsystem.
- Mapping Context — ссылка на ассет InputMappingContext, который необходимо добавить для выбранного игрока/субсистемы.
- Priority — приоритет данного контекста: чем выше значение, тем выше приоритет его привязок. Если одно и то же действие назначено в нескольких контекстах, будет действовать тот, у которого приоритет максимален.
- Options — объект дополнительных параметров (Modify Context Options Structure), которые необходимо учитывать при добавлении этого контекста сопоставления.
- Remove Mapping Context — безопасно удаляет конкретный InputMappingContext для игрока/субсистемы. Функцию можно безопасно вызывать, даже если этот контекст не был ранее применён.
- Target — ссылка на объект (Enhanced Input Local Player Subsystem), для которого удаляется контекст сопоставления. В Blueprint возвращается функцией Get Enhanced Input Local Player Subsystem.
- Mapping Context — ссылка на ассет InputMappingContext, который необходимо удалить для выбранного игрока/субсистемы.
- Options — объект дополнительных параметров (Modify Context Options Structure), которые необходимо учитывать при удалении этого контекста сопоставления.
- Has Mapping Context — проверяет, добавлен ли указанный InputMappingContext к выбранному игроку/субсистеме. Позволяет программно определить, активен ли контекст, а также возвращает его приоритет.
- Target — ссылка на объект (Enhanced Input Local Player Subsystem), для которого необходимо узнать добавлен ли конкретный контекст сопоставления. В Blueprint возвращается функцией Get Enhanced Input Local Player Subsystem.
- Mapping Context — ссылка на ассет InputMappingContext, наличие которого необходимо проверить для выбранного игрока/субсистемы.
- Out Found Priority — если контекст найден, в текущем параметре возвращается его приоритет.
- Return Value — возвращает True, если указанный Mapping Context действительно назначен этому игроку/субсистеме, иначе False.
Совет. Вскоре выйдет моя бесплатная книга по Blueprints для Unreal Engine в PDF формате. Как она выйдет, рекомендую её скачать, чтобы Вы детально изучили блюпринты Анрил Энджин.