调试:showdebug 与日志
showdebug enhancedinput
运行时 ~ 输入 showdebug enhancedinput:
| 页签内容 | 看什么 |
|---|---|
| Mapping Contexts | 当前启用的 IMC 与优先级 |
| Action Mappings | 每个 IA 的键映射与修饰/触发器 |
| Key State | 按键当前状态 |
"按键没反应"的排查路径: 1. showdebug 里 IMC 是否启用(上下文没加); 2. 映射行是否被高优先级 IMC 抢占(同键覆盖); 3. Trigger 条件(Hold 时长没按够、Double Tap 间隔超了); 4. Modifier 死区把值吃掉了(摇杆轻推无值); 5. 绑定是否在(Pawn 重 Possess 丢绑定)。
日志
UE_LOG(LogEnhancedInput, Log, TEXT("IA_Move triggered: %s"), *Value.Get<FVector2D>().ToString());
或控制台:log EnhancedInput Verbose(可看到修饰/触发的每帧计算,信息量大,临时开用)。
常见"灵异"输入问题清单
| 症状 | 首先查 |
|---|---|
| 按键完全无反应 | IMC 启用、优先级覆盖、Trigger 配置 |
| 值永为 0 | Modifier 死区 / 取值类型不对 |
| 双触发同帧 | 同键两行映射的 Trigger 没分流好 |
| 输入卡死(按住不停) | Released/Completed 没处理;窗口失焦时输入未清 |
| UI 打开后还能操作游戏 | InputMode / IMC_UI 优先级 |
| 手柄能用键盘不能 | 键盘行缺失或 Modifier 放错 |
| 切场景后输入失效 | PlayerController/Pawn 重建,绑定丢失 |
一个测试习惯
给每个 IMC 状态写一张"按键预期表"(哪个上下文下哪些键可用),改输入后逐行过——输入回归测试几分钟,比上线后修串键便宜得多。
本章小结
showdebug enhancedinput是输入排查的第一工具(三页签覆盖 IMC/映射/按键)。- 七个"灵异"症状各有首选排查方向。
- 建立"按键预期表"做回归,输入 bug 上线成本最高。
