我正在尝试使用Unity的新输入系统来简单地读取鼠标位置。我创建了一个StandardMap
InputActionMap资产,其中CursorPosition
InputAction配置为读取鼠标位置("Value "Vector2"行动)。
我应该能够读取鼠标的值,使用如下代码:
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所示),就会发生这种情况下面的答案仍然适用,因为它正确地警告说,如果没有玩家输入组件,输入地图必须显式启用。
原来你需要Enable()
的InputActionMap
之前使用它!调用以下代码使输入正确:
theInputMapAsset.FindActionMap("StandardMap").Enable()
(当然你应该保存对action map/actions的引用,而不是每帧调用FindActionMap
)