跳转到正文

GIPS 1.6 发布日志

作

作者

作者

创建时间: 2026年9月08日更新时间: 2026年9月15日

目录

Generic Input System 1.6

相对 1.5 的更新。这一版让 StateTree 直接管理输入权限和缓冲窗口,同时收紧两个含糊默认:组件必须挂在 Pawn 上,没有有效控制设置不再放行全部输入。升级是行为收紧。挂在 Controller 上或空着 setup 的项目,升级后会完全收不到输入。

新增

  • 连招、受击和交互窗口可以用 StateTree 状态来开闭,不必在每个技能里手写压栈。 GIPS|Input 节点可在状态生命周期内压入/弹出控制设置,以及开启、关闭、监听和等待缓冲窗口。
  • C++ 和 StateTree 可以听到和蓝图同一套输入事件。 组件新增原生 multicast 委托。原有蓝图委托仍在。
  • Mac 进入运行时平台。 启用本插件会同时启用 StateTree。本版本面向 Unreal Engine 5.8。

变更

  • 输入组件只接受 Pawn Owner。 PlayerController / AIController 持有不再是「能挂上但绑定不完整」的中间态。StateTree 仍可从 Controller 解析到当前 Pawn,但组件本身必须在 Pawn 上。挂错位置时不会建立绑定。
  • 空 setup 不再等于允许所有输入。 GetCurrentInputSetup() 为空时返回 false 并 Warning。只把组件当事件总线的项目仍会收到广播,内部 Processor 不会跑。
  • 坏的 Input Config 会在编辑器里直接报错,运行时不再 check 崩溃。 无效 Tag、缺 Input Action、缓冲窗口定义不完整都会失败。空指针绑定改为 Warning 并跳过。
  • 空 InputTags 的 Processor 现在匹配全部输入。 仍受 Trigger Event 过滤。以前靠空标签绕过校验、假装自己不参与的 Processor,升级后会接到所有输入。
  • 关掉全部缓冲窗口时,监听方会收到每一个窗口的关闭。 CloseActiveInputBufferWindows 以前只清空列表。依赖「批量关闭无事件」的动画或技能逻辑会重入。

修复

  • 精确匹配开关真正生效。 ListenInputEvent 的 bExactMatch 在 1.5 写在头文件里,实现没有赋值。默认仍是精确匹配。
  • 取消异步监听时解绑正确的委托。 非缓冲监听不再误解绑缓冲事件,取消后也不会漏掉 Super::Cancel()。

移除

  • EGIPS_OwnerType 不再保留。 Controller Owner 这条未完成路径直接删掉,而不是继续补 TODO。外部 C++ 引用该枚举会编不过。

升级说明

行为收紧。蓝图组件位置、Input Config、Processor 标签和监听关窗的逻辑必须核对。不改时最常见的结果是角色完全没有输入,或 Processor 突然吃到全部动作。

  1. 把 UGIPS_InputSystemComponent 从 Controller 挪到受控 Pawn。
  2. 保证组件始终有有效的 UGIPS_InputControlSetup,不要再依赖「无 setup 即全部放行」。
  3. 打开现有 Input Config,按新的校验错误补齐 Tag 与 Input Action。
  4. 审查空 InputTags 的 Processor,确认它们现在接到所有输入是你要的行为。
  5. 如果监听「关闭全部窗口」,按每个窗口都会收到关闭事件来改逻辑。
  6. 工程如果刻意关掉 StateTree,需要先处理这个硬依赖。