用途:面向 Unity 新输入系统(Input System)的正确性检查与模式参考,帮助识别并修正常见输入 bug,包括动作读取方式选错、新旧 API 混用、重绑定丢失、多人设备分配错误等。前置技能为 unity-input。
主要能力:
- 动作读取:一次性动作(跳跃、交互)用 WasPressedThisFrame() 或 triggered;持续动作(冲刺、瞄准)用 IsPressed();摇杆/鼠标增量用 ReadValue<Vector2>()。triggered 会遵循 Interactions,WasPressedThisFrame 为原始按下。
- 动作映射切换:PlayerInput.SwitchCurrentActionMap 会禁用上一映射;也可手动 Enable/Disable,或让多个映射同时启用(如 Pause)。
- 处理器与交互区分:Deadzone 等属于 Processor(改值),Hold/Tap 等属于 Interaction(改时序)。运行时可用 ApplyBindingOverride 覆盖处理器。
- InputValue 生命周期:SendMessages/BroadcastMessages 模式下 InputValue 会被复用,须在回调内用 Get<T>() 立即复制。
- 多源输入:多指触控、多手柄同动作需用 PassThrough 动作类型,Value 类型会做消歧只取最大幅度源。
- 启用范围:优先在映射层级 Enable/Disable,单动作启用会造成 map.enabled 为 false 而 action.enabled 为 true 的困惑状态。
- 按键提示:用 GetBindingDisplayString 获取当前绑定显示名,避免硬编码;图标映射需自行实现。
- 本地多人:用 PlayerInputManager 自动分配设备,不要用 Gamepad.current;监听 onPlayerJoined/onPlayerLeft。
- 控制方案自动切换:监听 controlsChangedEvent,用 currentControlScheme 更新提示。
使用方式:作为 Claude 技能加载,在编写或审查 Unity 输入代码时对照上述模式。
限制:资料未提供安装命令、收费信息或具体版本要求;部分 API 行为以 Unity 官方文档为准。