Новая система ввода Unity возвращает 0 или не работает

#unity3d #input

Вопрос:

Я пытаюсь использовать новую систему ввода Unity, чтобы просто считывать положение мыши. Я создал StandardMap ресурс InputActionMap с CursorPosition функцией ввода, настроенной для считывания положения мыши (действие»Значение и вектор2″).

Я должен быть в состоянии прочитать значение мыши, используя что-то вроде:

 Vector2 pointerPosition = 
 theInputMapAsset.FindActionMap("StandardMap").FindAction("CursorMovement").ReadValue<Vector2>();
 

К сожалению, pointerPosition всегда возвращает 0,0! Я перепробовал все, и, похоже, это не работает…

РЕДАКТИРОВАТЬ: Оказывается, такая ситуация возникает, если у вас нет PlayerInput компонента, определяющего обработчик ввода по умолчанию, как указано в: https://docs.unity3d.com/Packages/com.unity.inputsystem@1.0/manual/Components.html Приведенный ниже ответ по-прежнему применим, так как он правильно предупреждает, что входная карта должна быть явно включена, если компонент ввода игрока отсутствует.

Ответ №1:

Оказывается, вам нужно Enable() InputActionMap это сделать перед его использованием! Вызов следующего кода позволил правильно ввести:

 theInputMapAsset.FindActionMap("StandardMap").Enable()
 

(конечно, вам, вероятно, следует сохранить ссылки на карту действий/действия вместо вызова FindActionMap каждого кадра)