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

Unity设置targetFrameRate后Input.GetMouseButtonDown(0)异常触发求助

Unity Input.GetMouseButtonDown(0) 异常问题解决

当设置Application.targetFrameRate = 60;时,Input.GetMouseButtonDown(0)会在鼠标按下和释放时均返回True,但Input.GetMouseButtonUp(0)功能正常。测试代码如下:

void Update()
{
    if(Input.GetMouseButtonDown(0))
    {
        Debug.Log("Down");
    }
}

运行后点击和释放鼠标都会打印"Down",以下是几种可行的解决方法:

  • 改用Time.captureFramerate控制帧率:该方法通过捕获帧来限制帧率,不会干扰输入事件的检测,设置方式为:
    void Start()
    {
        Time.captureFramerate = 60;
    }
    
  • 手动过滤重复触发:记录上一帧的鼠标状态,确保只在真正按下的帧触发逻辑:
    private bool _lastMouseDown;
    
    void Update()
    {
        bool isMouseDown = Input.GetMouseButtonDown(0);
        if (isMouseDown && !_lastMouseDown)
        {
            Debug.Log("Down");
        }
        _lastMouseDown = isMouseDown;
    }
    
  • 检查并升级Unity版本:部分旧版本Unity存在Application.targetFrameRate与输入事件冲突的bug,建议升级到LTS稳定版本(如2021.3及以上)
  • 规范targetFrameRate的设置时机:确保仅在初始化阶段(如Awake或Start)设置一次Application.targetFrameRate = 60;,不要在Update等循环方法中重复设置

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.09 05:27:09