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

Unity InputSystem鼠标中键点击触发滚动:Bug还是可禁用特性?

问题原因与解决方案

这不是Unity InputSystem的Bug,是部分鼠标硬件/驱动的特性——点击中键时,会向滚动轴输出一个极小的正向数值,刚好触发了Zoom动作的performed回调(只要输入值发生变化就会触发,哪怕是从0到一个微小正数)。

以下是两种可行的解决方法:

方法一:代码中过滤微小滚动值

直接在缩放回调里判断滚动值的绝对值,只有超过设定阈值才执行缩放逻辑,过滤掉中键点击带来的微小干扰值。修改后的OnZoom方法如下:

private void OnZoom(InputAction.CallbackContext inputValue)
{
    float scrollY = inputValue.ReadValue<Vector2>().y;
    // 过滤微小值,阈值可根据实际情况调整(比如0.1)
    if (Mathf.Abs(scrollY) < 0.1f)
        return;
        
    Vector3 direction = cameraTransform.position - transform.position;
    float distance = direction.magnitude;
    float value = Mathf.Sign(scrollY);

    if (distance < minZoomDistance && value > 0f)
    {
        return;
    }
    if (distance > maxZoomDistance && value < 0f)
    {
        return;
    }

    direction.Normalize();
    cameraTransform.position = Vector3.MoveTowards(cameraTransform.position, transform.position, value * stepSize);
}

方法二:在InputActions中设置交互阈值

无需修改代码,直接在Input System动作编辑器里从输入源头过滤误触发:

  • 打开你创建的Controls.inputactions文件
  • 找到Zoom动作下的Scroll [Mouse]绑定
  • 在Inspector面板的Interactions区域,选中默认的Value Change交互,设置Min Value为0.5(或其他合适数值)
  • 保存并重新生成C#类

这样只有当滚动值的绝对值超过设定阈值时,才会触发performed回调,彻底避免中键点击的误触发。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.30 10:22:18