文档:输入模式

whiteviera2025-10-08

设计思路

所有输入上下文现在都由位于BasePlayerController中的输入模式管理器(InputModeManager)管理。

这个机制将游戏的所有输入分为【固定的输入模式 + 动态叠加层】来进行管理。

输入层UInputLayer

  • FName LayerName:输入层的名字;暂时未使用。
  • UInputMappingContext* Context:该层所对应的输入上下文映射。
  • int32 Priority:该层(上下文映射)的优先级。
  • TMap<UInputAction*, UInputActionHandler*[]>:上下文映射中使用的每个InputAction和对应的处理回调。

输入动作回调UInputActionHandler

  • ETriggerEvent TriggerType:当前回调应该在哪个触发事件中调用(如:触发时?开始时?结束时?)
  • void HandleInput(const FInputActionValue& Value):当前回调的函数体;使用回调时应当将该函数绑定到对应的输入事件上,UE会将调用自动转发到对应的HandleInput_Implementation实现函数上。
  • void Initialize(APlayerController* PC):初始化函数。回调在创建后必须先初始化才能保证被正常使用(能够正确的访问世界上下文)。

输入模式定义FInputModeDefinition

  • EInputMode InputMode:对应的输入模式枚举。
  • UInputLayer*[] InputLayers:该输入模式所包含的(多个)输入层。

输入模式配置UInputModeConfig

配置在管理器中的输入模式数据;包含每个输入模式的定义。

输入模式管理器

提供三个方法:

  • 设置当前输入模式
  • 添加输入叠加层
  • 删除输入叠加层