InputEventAction
Программное событие логического действия InputMap.
InputEventAction представляет логическое действие, а не физическую клавишу. Создание или изменение объекта не вводит нажатие в игру. Для отправки используется Input.ParseInputEvent; при буферизации глобальное состояние может обновиться позднее, когда очередь будет обработана.
Полный пример ожидает уже зарегистрированное действие и создаёт новый объект события для каждого вызова. Отправляйте отпускание для соответствующего нажатия. Несколько виртуальных кнопок одного действия требуют согласования их общего состояния: EventIndex = -1 не создаёт независимое удержание для каждой кнопки.
using System;
using Reckfell;
public static class VirtualActionExample
{
// The action must already exist. Each call creates a fresh event object.
public static void Send(StringName action, bool pressed, float strength = 1f)
{
if (!InputMap.HasAction(action))
throw new ArgumentException("Register the action before sending input.", nameof(action));
if (!float.IsFinite(strength))
throw new ArgumentOutOfRangeException(nameof(strength));
using var inputEvent = new InputEventAction
{
Action = action,
Pressed = pressed,
Strength = pressed ? strength : 0f
};
Input.ParseInputEvent(inputEvent);
}
}Событие не перемещает указатель ОС и не имитирует физическую клавишу. Изменение InputMap во время удержания может изменить выбор слота: сначала завершите нажатие, затем меняйте привязки.
Объявления сверены с C# SDK 1.0.0. Раскройте имя, чтобы увидеть сигнатуры и описание.
Конструкторы1
InputEventActionКонструктор
public InputEventAction();Создаёт событие без отправки во ввод: Action пустой, Pressed = false, Strength = 1, EventIndex = -1. Изменение свойств само не меняет глобальное состояние Input.
Свойства4
ActionСвойство
public StringName Action { get; set; }Имя логического действия. Для обработки через Input действие должно существовать в InputMap. Присваивание имени не создаёт действие, привязку клавиши или физическое нажатие.
EventIndexСвойство
public int EventIndex { get; set; }Индекс источника внутри действия. При -1 используется дополнительный виртуальный слот после его привязок, а не уникальный ID экземпляра события. Несколько событий с одним действием и устройством используют этот общий слот; отпускание одного не учитывает независимое удержание другого. Не меняйте привязки InputMap между парой нажатие/отпускание и не используйте произвольные числа как ID кнопок.
PressedСвойство
public bool Pressed { get; set; }Состояние виртуального действия в этом событии: true — нажатие, false — отпускание. Само присваивание не отправляет событие. Отпускание не обнуляет хранящееся Strength; сила при сопоставлении отпущенного действия всё равно равна 0.
StrengthСвойство
public float Strength { get; set; }Хранящаяся сила события. Конечные значения ограничиваются диапазоном 0..1; начальное значение — 1. Свойство не обнуляется автоматически при Pressed = false, но GetActionStrength для отпускания возвращает 0. Проверяйте конечность собственных входных значений.
Методы7
GetActionStringName
public StringName GetAction();Возвращает Action без отправки события или изменения Input.
StringNameИмя логического действия.
GetEventIndexint
public int GetEventIndex();Возвращает EventIndex без отправки события или изменения Input.
intИндекс источника; -1 выбирает общий виртуальный слот.
GetStrengthfloat
public float GetStrength();Возвращает Strength без отправки события или изменения Input.
floatХранящаяся сила в 0..1 для конечных входных значений, независимо от Pressed.
SetActionvoid
public void SetAction(StringName action);Устанавливает Action с правилами свойства; событие не отправляется.
| Имя | Тип | По умолчанию |
|---|---|---|
action | StringName | — |
actionИмя логического действия.
SetEventIndexvoid
public void SetEventIndex(int index);Устанавливает EventIndex с правилами свойства; событие не отправляется.
| Имя | Тип | По умолчанию |
|---|---|---|
index | int | — |
indexИндекс источника; -1 выбирает общий виртуальный слот.
SetPressedvoid
public void SetPressed(bool pressed);Устанавливает Pressed; не отправляет событие и не изменяет хранящееся Strength.
| Имя | Тип | По умолчанию |
|---|---|---|
pressed | bool | — |
pressedtrue для нажатия, false для отпускания.
SetStrengthvoid
public void SetStrength(float strength);Устанавливает Strength с правилами свойства; событие не отправляется.
| Имя | Тип | По умолчанию |
|---|---|---|
strength | float | — |
strengthХранящаяся сила в 0..1 для конечных входных значений, независимо от Pressed.