#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
каждого кадра)