Unity新输入系统读取鼠标位置返回0或无法正常工作如何解决
Unity新输入系统读取鼠标位置返回(0,0)问题排查
问题复现前提
- 已创建名为
StandardMap的InputActionMap资源 - 资源内配置了CursorPosition类型的InputAction,动作属性设置为
Value & Vector2用于读取鼠标位置 - 尝试用如下代码读取坐标:
Vector2 pointerPosition = theInputMapAsset.FindActionMap("StandardMap").FindAction("CursorMovement").ReadValue<Vector2>();
- 运行后
pointerPosition始终返回(0,0),无法拿到正确鼠标坐标
根因说明
当项目中没有挂载包含默认输入处理器的PlayerInput组件时,自定义的InputActionMap不会被自动启用,输入系统不会主动采集对应动作的数值,因此读取结果始终为默认值。
修复方案
没有使用PlayerInput组件的场景下,必须显式启用对应的输入映射后再读取数值,调整后的代码示例:
// 获取目标输入映射 var standardActionMap = theInputMapAsset.FindActionMap("StandardMap"); // 手动启用映射,触发输入系统开始采集对应动作数据 standardActionMap.Enable(); // 读取鼠标位置 Vector2 pointerPosition = standardActionMap.FindAction("CursorMovement").ReadValue<Vector2>();
提示:如果后续不需要持续监听该映射的输入,可调用
standardActionMap.Disable()关闭映射,降低不必要的性能消耗。
内容的提问来源于stack exchange,提问作者Francois Bertrand
相关产品推荐
相关产品推荐

