虚幻引擎 - 通用输入系统

通用输入系统(GIPS),是对虚幻引擎 EnhancedInput 模块的扩展,提供简单、可复用的方式来响应输入事件,并通过灵活的机制管理和使用游戏输入。

gips cover
罗传月武(YueWu)

作者

罗传月武(YueWu)

专注游戏开发和Web技术。

创建时间: 2025年3月24日更新时间: 2026年9月13日

目录

概述

Generic Input System 是面向 Unreal Enhanced Input 项目的输入管理插件。它通过挂在 Pawn 上的组件和数据配置,统一处理“当前状态下哪些输入可用、哪些输入要被拦截、哪些输入应先缓存再释放”。它适合动作、战斗、互动、技能、界面或状态树驱动的项目,让输入规则从分散回调回到清晰、可复用的流程里。

前提:在使用输入系统前,确保你对GameplayTags和EnhancedInput有一个基本的了解,本系统只是为它们提供了一个更灵活且强大的使用方式。

文档与支持

为什么需要 Generic Input System?

输入系统在原型阶段往往很简单:按键触发动作,动作自己判断能不能执行。项目进入战斗、互动、技能和界面并存的阶段后,输入开始受角色状态、动画时机、当前模式和优先级共同影响。攻击中是否允许跳跃,受击恢复时是否接受翻滚,连击窗口是否记住提前按下的按键,互动确认是否应该优先于战斗输入,这些规则如果没有统一流程,很容易散落在角色、技能、动画和界面代码里。

  • 如何把项目已有的输入动作转换成统一的玩法含义,让战斗、互动、技能和界面共享同一套输入词汇?
  • 如何随角色状态进入或离开,成组切换当前可用输入?
  • 如何在连击、翻滚、技能预输入或互动确认窗口里缓存输入,并按策略释放?
  • 如何让蓝图、C++、状态树和调试工具都能观察同一条输入路径?

GIPS 将输入接收、权限判断、响应处理和输入缓冲拆成稳定步骤,让项目用数据和可扩展对象管理输入流程。

关键特性

用玩法标签统一输入含义

输入配置将项目已有的 UInputAction 关联到玩法标签,组件接收 Enhanced Input 的触发后再按标签分发。你可以保留自己的输入动作和映射上下文,同时获得一套可被战斗、技能、互动和界面共用的输入语义。

让输入权限跟随状态变化

输入控制配置可以组合总是允许的输入、校验器、处理器、缓冲策略和处理顺序。状态开始时压入配置,状态结束时弹出配置,就能把“哪些输入现在可用”集中在数据和对象中管理。

在合适时机缓存和释放输入

命名缓冲窗口可以从蓝图或 C++ 打开和关闭。窗口支持最后一次有效输入、有效输入立即触发、最高优先级输入等策略,并提供窗口状态和已释放输入事件,适合连击、翻滚缓冲、技能预输入和互动确认。

用蓝图、C++ 和状态树扩展响应

项目可以扩展 UGIPS_InputChecker 与 UGIPS_InputProcessor,按输入标签、触发阶段或角色身上的玩法标签判断输入是否通过以及如何响应。状态树任务可以在状态生命周期内启用输入控制配置、管理缓冲窗口、等待窗口变化或检查最近缓存的输入。

在运行时诊断输入路径

异步蓝图节点可以监听普通输入或缓冲输入;Gameplay Debugger 和 LogGIPS 可以帮助查看输入通过、阻止、缓冲和活动窗口状态,减少“为什么这次按键没触发”的排查成本。

适用项目与人群

  • 动作、战斗、冒险、格斗、角色驱动或状态机复杂的项目
  • 使用 Enhanced Input 与玩法标签,希望输入规则可复用的团队
  • 需要连击、恢复、互动、技能或界面输入限制与输入缓冲的玩法
  • 使用状态树管理状态,并希望输入控制随状态生命周期自动进入和退出的项目
  • 希望在蓝图与 C++ 中扩展输入校验和响应的团队

核心组件必须挂在 Pawn 上;本地玩家 Enhanced Input 也在该 Pawn 上绑定。不支持 PlayerController 或 AIController 持有。GIPS 管理本地输入权限与缓冲,不提供原始硬件输入的网络同步协议;多人项目需要同步和校验输入产生的项目级动作。

✨ 减少复制粘贴

使用前:需反复复制粘贴相同的输入代码

gips

使用后:通过 GIPS 统一管理输入逻辑,无需重复代码

gips

强迫症万岁!

✨ 简化逻辑判定

在开发战斗系统时,GIPS 让你无需编写大量 If/Else 语句来判断复杂逻辑(如普通攻击是否可跳跃,或地面/空中攻击切换)。

你可以将一部分的复杂性迁移到输入层面,以降低后续系统的复杂性。

🛠️示例

使用 GIPS 配置输入逻辑:

gips

越是复杂困难的任务,使用通用输入系统,效果就越显著。

技术详情

代码模块(Code Modules):

  • GenericInputSystem(Runtime)

依赖插件(Plugin Dependencies):

  • EnhancedInput
  • StateTree

Blueprint 数量(Number of Blueprints): 随配套项目提供

C++ 类数量(Number of C++ Classes): 8+

网络复制(Network Replicated): 否

开发支持平台(Supported Development Platforms): Win64、Mac、Android、Linux

支持的目标构建平台(Supported Target Build Platforms): Win64、Mac、Android、Linux

配套项目(Companion Project): 购买后通过购买验证提供

重要说明/附加说明(Important/Additional Notes): 查看我的产品整体设计