Unity新输入系统返回0或不工作

Unity new input system returning 0 or not working

我正在尝试使用 Unity 的新输入系统来简单地读取鼠标位置。我创建了一个 StandardMap InputActionMap 资产,其中 CursorPosition InputAction 配置为读取鼠标位置(“Value & Vector2”操作)。

我应该能够使用类似以下内容读取鼠标的值:

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

不幸的是,pointerPosition 总是 returns 0,0!我什么都试过了,好像还是不行...

编辑: 事实证明,如果您没有 PlayerInput 定义默认输入处理程序的组件,就会发生这种情况:https://docs.unity3d.com/Packages/com.unity.inputsystem@1.0/manual/Components.html 下面的答案仍然适用,因为它正确地警告说,如果没有播放器输入组件,则必须显式启用输入映射。

原来你需要 Enable() InputActionMap 才能使用它!调用以下代码可正确启用输入:

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

(当然你应该保存对动作的引用map/actions而不是每帧调用FindActionMap