You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Unity新输入系统运行时修改InputAction的interactions属性方法咨询

解决方法

你的实现思路是合理的,使用Unity新输入系统内置的Hold交互可以避免自行统计按键时长的各类边界问题(比如窗口失焦、输入事件丢失导致的计时错误等)。运行时修改InputAction的交互是完全可以实现的,你遇到的只读报错是因为官方没有开放interactions字段的直接赋值权限,需要通过内置的绑定重载API操作,具体步骤如下:

具体实现步骤

  • 首先禁用需要修改的InputAction:运行时处于启用状态的InputAction修改配置不会生效,必须先禁用
  • 调用ApplyBindingOverride方法传入新的交互配置
  • 重新启用InputAction,配置即可生效

完整代码示例

public void AdjustShootHoldDuration(float duration)
{
    // 禁用射击动作
    controls.Main.Shoot.Disable();
    
    // 仅重载交互配置,保留原有按键绑定
    controls.Main.Shoot.ApplyBindingOverride(new InputBinding
    {
        interactions = $"Hold(duration={duration})"
    });
    
    // 重新启用动作,新的Hold时长立即生效
    controls.Main.Shoot.Enable();
}

注意事项

  • 如果需要同时保留多个交互(比如同时支持点击射击和长按蓄力),可以用逗号拼接交互配置,示例:interactions = $"Press, Hold(duration={duration})"
  • 如果你的InputAction绑定了多个输入路径(比如同时支持键鼠左键、手柄扳机键),可以通过指定绑定索引或路径单独修改某一设备的交互,无需全局覆盖
  • 不推荐使用反射修改interactions字段,不仅会破坏输入系统的内部状态管理,还可能在版本更新后出现兼容问题

内容的提问来源于stack exchange,提问作者Mathias

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 14:27:01