InputMap
Runtime-карта именованных действий и привязок ввода.
Создайте действие через AddAction, добавьте InputEvent через ActionAddEvent, затем проверяйте событие или состояние Input. Регистрация действия, привязка, соответствие события и удерживаемое состояние — разные операции. Ни одна правка карты сама по себе не сохраняет пользовательские настройки.
ActionGetEvents копирует список, но не ресурсы событий. EventIsAction допускает release и не является проверкой нажатия. GetActionDescription в 1.0.0 перечисляет только key-привязки. Для полного интерфейса переназначения выводите список событий и храните настройки отдельно.
LoadFromProjectSettings заменяет runtime-карту данными текущих ProjectSettings: временные правки исчезают. Singleton заимствованный; не Dispose его. Проверены действия с уникальными именами и перезагрузка в отдельном Windows headless-проекте. Физический ввод, GUI-dispatch, сохранение на диск и другие платформы не проверялись.
Объявления сверены с C# SDK 1.0.0. Раскройте имя, чтобы увидеть сигнатуры и описание.
Свойства1
SingletonСвойство
public static InputMapInstance Singleton { get; }Заимствованный кешированный InputMapInstance того же runtime singleton, которым пользуются статические методы. Не создавайте второй InputMap и не Dispose этот wrapper. Для обычной настройки действий достаточно статического InputMap API.
Методы14
ActionAddEventvoid
public static void ActionAddEvent(StringName action, InputEvent @event);Добавляет ссылку на InputEvent к существующему действию. Совпадение проверяется как exact binding с устройством, а не равенство wrapper; обычные дубликаты пропускаются. Device=0 у key/mouse нормализуется в категорию устройства ПОСЛЕ этой проверки и меняет переданный ресурс: так могут появиться эквивалентные дубликаты. Используйте корректную Device-категорию до вызова. Изменение самого ресурса позже меняет привязку; OS-событие не отправляется и конфигурация на диск не сохраняется.
| Имя | Тип | По умолчанию |
|---|---|---|
action | StringName | — |
event | InputEvent | — |
actionИмя существующего действия; только AddAction принимает новое уникальное имя.
eventНепустой InputEvent для сравнения/привязки; wrapper identity обычно не является критерием совпадения.
ActionEraseEventvoid
public static void ActionEraseEvent(StringName action, InputEvent @event);Удаляет первое exact-совпадение привязки, учитывая устройство. Другой wrapper с тем же описанием может совпасть; отсутствие совпадения ничего не удаляет. При удалении совпавшего события также отпускает удерживаемое действие. Для удаления всех привязок используйте ActionEraseEvents.
| Имя | Тип | По умолчанию |
|---|---|---|
action | StringName | — |
event | InputEvent | — |
actionИмя существующего действия; только AddAction принимает новое уникальное имя.
eventНепустой InputEvent для сравнения/привязки; wrapper identity обычно не является критерием совпадения.
ActionEraseEventsvoid
public static void ActionEraseEvents(StringName action);Удаляет все привязки существующего действия и отпускает его удерживаемое состояние. Имя и deadzone действия остаются; на диск изменения не записываются.
| Имя | Тип | По умолчанию |
|---|---|---|
action | StringName | — |
actionИмя существующего действия; только AddAction принимает новое уникальное имя.
ActionGetDeadzonefloat
public static float ActionGetDeadzone(StringName action);Читает сохранённую мёртвую зону существующего действия. Четыре этих значения усредняются GetVector при отрицательном параметре deadzone.
| Имя | Тип | По умолчанию |
|---|---|---|
action | StringName | — |
actionИмя существующего действия Input Map.
floatСохранённое число. Для отсутствующего действия сообщает ошибку и возвращает 0; это не подтверждает корректную нулевую настройку.
ActionGetEventsReckfell.Collections.Array<InputEvent>
public static Reckfell.Collections.Array<InputEvent> ActionGetEvents(StringName action);Возвращает новый типизированный Array<InputEvent>: изменение списка не меняет InputMap. Ресурсы InputEvent внутри общие и могут быть теми же C# wrappers, поэтому изменение события меняет действующую привязку. Не Dispose заимствованный элемент ради очистки списка; для удаления используйте методы InputMap. У типизированного Array нет Dispose.
| Имя | Тип | По умолчанию |
|---|---|---|
action | StringName | — |
actionИмя существующего действия; только AddAction принимает новое уникальное имя.
Reckfell.Collections.Array<InputEvent>Новый типизированный Array<InputEvent> с общими ресурсами; контейнер не имеет Dispose.
ActionHasEventbool
public static bool ActionHasEvent(StringName action, InputEvent @event);Проверяет exact-совпадение события с привязкой существующего действия, включая устройство; это не проверка wrapper identity. Совпадение не означает, что действие сейчас удерживается.
| Имя | Тип | По умолчанию |
|---|---|---|
action | StringName | — |
event | InputEvent | — |
actionИмя существующего действия; только AddAction принимает новое уникальное имя.
eventНепустой InputEvent для сравнения/привязки; wrapper identity обычно не является критерием совпадения.
boolНаличие совпадающей привязки, не состояние нажатия.
ActionSetDeadzonevoid
public static void ActionSetDeadzone(StringName action, float deadzone);Меняет сохранённую мёртвую зону существующего действия. Не создаёт отсутствующее действие, не назначает устройство и не сохраняет конфигурацию на диск.
| Имя | Тип | По умолчанию |
|---|---|---|
action | StringName | — |
deadzone | float | — |
actionИмя уже созданного действия.
deadzoneНовое значение; для обычной аналоговой обвязки проверяйте конечность и диапазон 0 ≤ значение < 1. Сам нативный setter сохраняет число без такого ограничения.
AddActionvoid
public static void AddAction(StringName action, float deadzone = 0.2f);Создаёт новое действие во время выполнения. Существующее имя отклоняется с сообщением об ошибке. Сам вызов не добавляет физические события и не сохраняет настройки на диск.
| Имя | Тип | По умолчанию |
|---|---|---|
action | StringName | — |
deadzone | float | 0.2f |
actionУникальное имя нового действия. Для существующего действия сначала используйте HasAction.
deadzoneМёртвая зона действия, по умолчанию 0,2 в SDK 1.0.0. Проверяйте значение в своём коде; добавление действия не выполняет такую же проверку диапазона, как учебная обвязка.
EraseActionvoid
public static void EraseAction(StringName action);Удаляет существующее действие из runtime-карты вместе с привязками. Не является сохранением ProjectSettings. Для отсутствующего имени будет диагностика; сначала проверьте HasAction. Не полагайтесь на удаление записи как замену явного ActionRelease в собственном управлении удержанием.
| Имя | Тип | По умолчанию |
|---|---|---|
action | StringName | — |
actionИмя существующего действия; только AddAction принимает новое уникальное имя.
EventIsActionbool
public static bool EventIsAction(InputEvent @event, StringName action, bool exactMatch = false);Проверяет соответствие события существующему действию, не текущее состояние Input. По умолчанию exactMatch=false допускает дополнительные modifiers; true требует точного action-match. Release-событие тоже может совпасть. InputEventAction сравнивается по имени даже без физических привязок. Запрос не отправляет событие и не нажимает действие.
| Имя | Тип | По умолчанию |
|---|---|---|
event | InputEvent | — |
action | StringName | — |
exactMatch | bool | false |
eventНепустой InputEvent для сравнения/привязки; wrapper identity обычно не является критерием совпадения.
actionИмя существующего действия; только AddAction принимает новое уникальное имя.
exactMatchtrue требует точного action-match; false допускает дополнительные modifiers. Не является флагом pressed.
boolСоответствие события имени/привязке, независимо от текущего состояния Input.
GetActionDescriptionstring
public static string GetActionDescription(StringName action);В 1.0.0 формирует отображаемый текст только по InputEventKey-привязкам, соединяя их локализованным «или». Mouse/joypad-привязки не перечисляет: fallback о неназначенном вводе может появиться даже с ними. Для полного списка используйте ActionGetEvents и собственные подписи. Не сохраняйте этот текст как ID или стабильный формат.
| Имя | Тип | По умолчанию |
|---|---|---|
action | StringName | — |
actionИмя существующего действия; только AddAction принимает новое уникальное имя.
stringОтображаемые key-привязки или локализованный fallback; не полный список устройств.
GetActionsReckfell.Collections.Array<StringName>
public static Reckfell.Collections.Array<StringName> GetActions();Возвращает снимок зарегистрированных имён действий, включая встроенные и добавленные во время выполнения. Это не список только пользовательских привязок и не сортированный контракт. Изменение контейнера не меняет карту.
Reckfell.Collections.Array<StringName>Типизированный Array<StringName> имён без обещания сортировки.
HasActionbool
public static bool HasAction(StringName action);Проверяет регистрацию имени. true не гарантирует наличие физической привязки, её пригодность или удерживаемое состояние.
| Имя | Тип | По умолчанию |
|---|---|---|
action | StringName | — |
actionИмя существующего действия; только AddAction принимает новое уникальное имя.
booltrue, если имя зарегистрировано, даже без привязок.
LoadFromProjectSettingsvoid
public static void LoadFromProjectSettings();Очищает текущую runtime-карту и заново загружает действия input/* из текущих ProjectSettings, затем испускает ProjectSettingsLoaded. Это замена, не merge: временные действия/переназначения теряются. Не записывает настройки на диск и не перечитывает автоматически project.reckfell с диска. Вызывайте после подготовки нужных настроек проекта.
Сигналы и события1
ProjectSettingsLoadedСобытие
public static event Action ProjectSettingsLoaded;Событие без аргументов после завершения LoadFromProjectSettings. Не означает загрузку сохранённого пользовательского remap, нажатие клавиши или запись файла. Подписывайтесь до перезагрузки и снимайте подписку по окончании жизни получателя.