跳转到正文

调试指南

说明如何通过 LogGIPS、Gameplay Debugger 的 GenericInputSystem 分类和组件调试选项,排查输入通过、阻止、缓冲及活动窗口。

作

作者

作者

创建时间: 2025年4月09日更新时间: 2026年10月19日

目录

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 拒绝原因。

常见排查顺序

  1. 确认组件挂在 Pawn 上,且本地玩家的 Enhanced Input Component 已建立。
  2. 确认 InputConfig 中的 Gameplay Tag、Input Action 和映射上下文有效。
  3. 确认组件至少有一个有效的 InputControlSetup,并检查当前设定栈顶。
  4. 若事件广播但处理器没有执行,检查 bProcessingInputExternally、Checker 规则和 Processor 的标签/阶段筛选。
  5. 若预输入没有释放,检查当前设定是否启用 bEnableInputBuffer、窗口是否活动,以及 AllowedInputs 是否包含该标签和阶段。

相关页面

  • 输入系统组件:事件和值的行为。
  • 输入控制设定:检查器和处理器筛选。
  • 输入缓冲系统:窗口和缓冲释放条件。