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

Unity多条件If语句问题排查:Shift+A组合键判断错误

问题分析
  • 核心触发逻辑错误:Input.GetKeyDown(KeyCode.XXX)仅在按键被按下的当前单帧返回true,你写的条件要求Shift(左/右)和A键必须在完全相同的一帧被按下才会触发,而普通用户按组合键的习惯都是先按住Shift,再按下A,两个按键的按下帧不可能完全对齐,因此这段代码在实际使用中几乎无法触发。
  • 条件冗余:你在两个||分支里重复写了Input.GetKeyDown(KeyCode.A)判断,完全可以提取合并,不需要重复校验。
修正方案

判断组合键的通用逻辑是:修饰键(Shift/Ctrl/Alt等)用Input.GetKey()判断是否处于按住状态,触发键用Input.GetKeyDown()判断是否刚被按下,修正后的代码如下:

if (Input.GetKeyDown(KeyCode.A) && (Input.GetKey(KeyCode.LeftShift) || Input.GetKey(KeyCode.RightShift)))
{
    print("Well done! Next Key: A");
}

你也可以直接用KeyCode.Shift同时匹配左右Shift,简化代码:

if (Input.GetKeyDown(KeyCode.A) && Input.GetKey(KeyCode.Shift))
{
    print("Well done! Next Key: A");
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 03:36:02