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

Unity中鼠标滑动时GetMouseButtonUp/Down触发多次问题求助

Unity鼠标滑动时GetMouseButtonUp重复触发的问题排查

我编写了一个简单的Unity3D MonoBehaviour脚本并挂载到立方体上,代码如下:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class test : MonoBehaviour
{
    void Update()
    {
        if (Input.GetMouseButtonDown(0))
        {
            Debug.Log("down");
        }
        if (Input.GetMouseButtonUp(0))
        {
            Debug.Log("up");
        }
    }
}

但在屏幕上滑动鼠标时出现日志异常:第三次滑动时,GetMouseButtonDown(0)输出1次‘down’,GetMouseButtonUp(0)却输出2次‘up’。查找过类似问题但情况不符,现求助该异常的原因。目前已通过状态变量方式临时规避问题,代码如下:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class test : MonoBehaviour
{
    private bool mSwipping = false;
    void Update()
    {
        if (!mSwipping && Input.GetMouseButtonDown(0))
        {
            mSwipping = true;
            Debug.Log("down");
        }
        if (mSwipping && Input.GetMouseButtonUp(0))
        {
            mSwipping = false;
            Debug.Log("up");
        }
    }
}

可能的异常原因

  • 帧同步与事件投递不同步:Update每帧执行一次,但系统层面的鼠标事件投递可能和Unity的帧循环节奏不匹配。如果某次鼠标抬起事件在单帧内被多次投递,就会导致GetMouseButtonUp(0)连续触发两次。
  • 场景元素干扰:若场景中存在UI元素,滑动时鼠标可能意外触发UI的交互事件,导致Unity额外生成鼠标抬起信号;或者射线检测在滑动过程中出现边界误判,间接影响输入事件的捕获逻辑。
  • Unity版本/平台bug:不同版本的Unity输入系统处理逻辑有差异,部分旧版本在特定平台(如Windows)上存在鼠标事件重复触发的已知问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.27 19:22:51