Unity中鼠标滑动时GetMouseButtonUp/Down触发多次问题求助
我编写了一个简单的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
相关产品推荐
相关产品推荐

