GIPS 提供两层诊断:按当前输入控制设定筛选的 LogGIPS 权限日志,以及 Gameplay Debugger 中的活动窗口和输入记录。先确认日志级别,再核对当前 Pawn、InputConfig 和 InputControlSetup。
配置日志级别
在项目的 DefaultEngine.ini 中设置日志类别。Verbose 用于显示检查结果;同时需在当前 InputControlSetup 开启 bEnableInputDebug,并可通过 DebugInputTags 和 DebugTriggerEvents 缩小范围。将类别调到 VeryVerbose 后,还会显示每次动作回调的标签、触发阶段和动作值。
plaintext
[Core.Log]
LogGIPS=Verbose //Also check "enable debug" in your InputControlSetup.
;LogGIPS=VeryVerbose 空的调试标签或事件列表不会按该字段过滤。日志能显示输入通过、被阻止或被缓冲,但具体是哪条自定义 Checker 规则拒绝了输入,需要结合当前 Actor 标签与该 Checker 配置定位。
使用 Gameplay Debugger
GIPS 注册的类别名是 GenericInputSystem。在 Unreal Gameplay Debugger 中启用该类别;它会显示调试 Pawn、当前 InputConfig、当前 InputControlSetup、窗口状态和最近缓冲输入。
Shift+1:切换活动缓冲窗口列表。Shift+2:切换通过的输入记录。Shift+3:切换被阻止的输入记录。Shift+4:切换已缓冲的输入记录。
输入记录包含标签和触发阶段,可协助判断事件是否到达组件、是否被缓冲或被阻止。MaxInputEntriesNum 控制每类记录保留数量,默认 5,最大 10;记录本身不保存完整 Checker 拒绝原因。
常见排查顺序
- 确认组件挂在 Pawn 上,且本地玩家的 Enhanced Input Component 已建立。
- 确认
InputConfig中的 Gameplay Tag、Input Action 和映射上下文有效。 - 确认组件至少有一个有效的
InputControlSetup,并检查当前设定栈顶。 - 若事件广播但处理器没有执行,检查
bProcessingInputExternally、Checker 规则和 Processor 的标签/阶段筛选。 - 若预输入没有释放,检查当前设定是否启用
bEnableInputBuffer、窗口是否活动,以及AllowedInputs是否包含该标签和阶段。
相关页面
- 输入系统组件:事件和值的行为。
- 输入控制设定:检查器和处理器筛选。
- 输入缓冲系统:窗口和缓冲释放条件。