Input · 模块总览与接入
从配置绑定、动作处理、通道缓存与玩家改键了解 Input,再接入角色的输入配置。
本页内容6 节
子模块与功能
进入具体功能,查阅使用步骤、运行机制与扩展方法。
配置与绑定
- 绑定与配置生命周期
理解跨 IMC 的共享绑定、配置所有权、延迟初始化,以及切换角色时的清理。
动作处理
- Handler 与能力分派
选择正确的输入阶段,把输入交给移动、GAS、GameplayEvent 或 UI,保持共享 Handler 无玩家状态。
- 值与触发规则
- 修饰器与双击
选择输入值变换所在层,理解玩家设置修饰器与 Double Tap 的时序规则。
- 修饰器与双击
输入缓存
- 通道输入缓存
按 GameplayTag 通道开窗,保留首批或末批输入,正常关闭执行,中断取消丢弃。
玩家改键
- 改键与玩家设置
通过 GameSettings 统一编辑与应用,区分 SharedSettings 偏好和 Enhanced Input 键映射数据。
调试与排查
- 调试与排查
使用 Gamepad 与 Actions 观察和模拟输入,沿设备、映射、绑定、缓存与能力定位问题。
输入经过哪几层
Input 连接设备输入与项目能力。配置与绑定管理 Setup 的应用和释放,动作处理选择事件并调用移动、GAS 或 UI;输入缓存处理延迟执行窗口,玩家改键接入 GameSettings 与 Enhanced Input 的设置数据。各部分的使用步骤、机制和约束放在自己的功能页中。
Input Action 定义输入值与触发规则,IMC 把设备按键映射到 Action,Setup 把 IMC 与 Handler 组织为一份配置。PlayerController 上的 UStarryInputManagerComponent 绑定动作事件,再分派到共享 Handler。
查看图表源码
flowchart LR
Device(键鼠 / 手柄) --> IMC(Input Mapping Context)
IMC --> IA(Input Action)
IA --> Event(Enhanced Input 事件)
Setup(Input Setup) -->|IMC 与 Handler| Manager(Controller 的 InputManager)
Event --> Manager
Manager --> Buffer(按通道判断缓存)
Buffer --> Handler(共享 InputHandler)
Handler --> Domain(Mover / GAS / UI / Gameplay)Manager 随 Controller 跨 Pawn 复用,只支持 PlayerController 挂载。UStarryInputManagerComponent 已继承输入缓存组件,不需要为了基本缓存再在角色上挂一份平行 Manager。
新增一个动作
- 创建 Input Action,选择正确的
Value Type,配置动作自身的 Trigger 与 Modifier。 - 在 IMC 中添加键位映射,按需配置按键条目的修饰器。
- 在内容浏览器
Starry → Input创建 Input Setup;需要自定义行为时从同分类创建 Input Handler 蓝图。 - 填写 Setup 的
InputMappingContext、Priority、InputHandlers。 - 给 Handler 指定
InputActions与TriggerEvents,实现或选用对应的处理逻辑。 - 按配置的拥有者,将 Setup 接入固定 Controller、角色或 GameFeature 中的一处。
Priority 默认 0。Setup 的资产校验会检查缺失 IMC、空 Handler、未配置动作/事件与 IMC 动作缺少处理器等情况。先解决配置校验,再排查运行时。
共用 Action 位于 Content/Blueprints/Input/Actions,共用 Setup/IMC 位于 Content/Blueprints/Input/Setups;只服务某一功能的资源随功能归属,不把所有输入资产都堆到全局目录。
选择一个接入拥有者
| 配置来源 | 填写或调用位置 | 适合用途 |
|---|---|---|
| Controller 固定配置 | Manager 的 InputHandlerSetup | 跟随本地玩家持续存在的输入 |
| 角色配置 | UStarryCharacterData::InputSetups 数组,经 PlayerCharacter 的 Provider 返回 | 随角色切换的移动或角色能力 |
| 功能配置 | GameFeatureAction_AddInputBinding::InputSetups | 随功能进入与退出配对添加、移除 |
| 辅助映射 | Manager 的 StandaloneContexts | 不由一份 Setup 提供 Handler 的辅助 IMC |
角色配置由 Manager 统一应用;Hero 在角色数据就绪时请求 RefreshPawnInputSetups,不维护第二份角色配置记录。功能来源之间不要重复拥有同一 Setup 或同一 IMC。
Controller 初始化要完整
AStarryPlayerController 已创建默认 Manager,并在 SetupInputComponent 的基类调用之后执行 InitializeInput()。自定义 Controller 时保留同样的接入顺序。
初始化需要 LocalPlayer、Enhanced Input Subsystem 与 Controller InputComponent 就绪。InputComponent 应为 UEnhancedInputComponent;当前没有输入组件运行中重建后的自动恢复机制。
项目 Config/DefaultInput.ini 使用:
DefaultPlayerInputClass=/Script/StarryGame.StarryPlayerInput
DefaultInputComponentClass=/Script/EnhancedInput.EnhancedInputComponent
bEnableUserSettings=True
UserSettingsClass=/Script/StarryGame.StarryInputUserSettings这些是输入配置的相关项,实际修改时保留它们所在的配置节与其他配置。
完成后应该看到什么
通过 HaloDebug 的 Actions 工具能看到映射后的 Action;操作设备后,对应 TriggerEvent 分派到 Handler。切换 Pawn 时角色配置随之更换,Controller 固定配置按 Manager 的重置策略处理。
配置增删、共享绑定与所有权见绑定与生命周期,动作如何交给移动和 GAS 见Handler 与能力分派,没有响应时看Input 排查。
实现入口:Source/StarryGame/Framework/Input、Framework/Character/StarryCharacterData 与 StarryPlayerCharacter。