前言
在 UE5 Lyra 示例项目中,LyraExperienceActionSet 是一个关键的数据驱动模块,主要用于**动态管理游戏体验的输入配置(Input Mapping)和技能系统(Ability System)**。以下是其核心作用:
一、核心功能?
- 输入映射管理
- 通过绑定 Enhanced Input 系统的 Input Mapping Context,为不同游戏模式(如射击、近战)或角色类型(如英雄、敌人)动态切换输入配置。
- 示例:射击模式下绑定开火/换弹输入,近战模式下绑定格挡/连击输入。
- 技能系统集成
- 通过 Gameplay Ability System (GAS) 为角色赋予特定的技能集合(AbilitySet),例如冲刺、治疗、武器技能等。
- 示例:为英雄角色加载武器技能,为敌人加载特殊攻击技能。
- 模块化配置
- 允许将输入和技能配置解耦为独立的 ActionSet 资产,通过组合不同 ActionSet 实现灵活的游戏体验切换。
- 示例:一个 ActionSet 负责射击输入,另一个 ActionSet 负责角色基础技能。
二、实际应用场景
1. 游戏模式切换
- 当玩家从大厅进入战斗时,通过加载不同的 LyraExperienceActionSet 动态切换输入和技能配置。
- 角色差异化
- 不同职业角色(如战士、法师)使用独立的 ActionSet,实现差异化的操作和技能逻辑。
- DLC/内容扩展
- 通过 Game Feature 插件动态加载新的 ActionSet,为游戏添加新技能或输入模式(如新增武器类型)。
三、技术实现流程
- 配置阶段
- 在 LyraExperienceDefinition 数据资产中引用一个或多个 LyraExperienceActionSet,关联对应的 InputConfig 和 AbilitySet。
+ LyraExperienceDefinition (主体验配置)
- Actions:
+ ActionSet_Shooter (LyraExperienceActionSet)
- InputConfigs: [Input_Shooting]
- AbilitySets: [AbilitySet_Rifle]
+ ActionSet_Character (LyraExperienceActionSet)
- AbilitySets: [AbilitySet_Dash, AbilitySet_Heal]
- 运行时激活
- 当游戏加载 LyraExperienceDefinition 时,自动激活关联的 ActionSet,完成输入映射和技能赋予:
- 输入映射:将 Input Mapping Context 注入到玩家控制的 Enhanced Input 子系统。
- 技能赋予:通过 ULyraAbilitySystemComponent 将 AbilitySet 中的技能赋予角色。
- 动态卸载
- 当切换游戏模式或卸载 DLC 时,自动移除相关的输入映射和技能,避免资源残留。
四、代码逻辑片段
// 伪代码:LyraExperienceActionSet 的激活逻辑
void ULyraExperienceActionSet::OnGameFeatureActivating() {
// 1. 绑定输入映射
for (ULyraInputConfig* InputConfig : InputConfigs) {
UEnhancedInputLocalPlayerSubsystem::Get()->AddMappingContext(
InputConfig->InputMappingContext,
InputConfig->Priority
);
}
// 2. 赋予技能
if (ULyraAbilitySystemComponent* ASC = GetLyraASC()) {
for (TSubclassOf<ULyraAbilitySet> AbilitySetClass : AbilitySets) {
const ULyraAbilitySet* AbilitySet = GetDefault<ULyraAbilitySet>(AbilitySetClass);
AbilitySet->GiveToAbilitySystem(ASC);
}
}
}
总结
1. 解耦设计
输入、技能、UI 等系统通过 ActionSet 分离,避免硬编码依赖。
2. 动态资源管理
支持运行时加载/卸载,适用于开放世界或模块化游戏。
3. 协作友好
策划人员可通过数据资产配置,无需修改代码。
LyraExperienceActionSet 是 Lyra 框架实现数据驱动游戏逻辑的核心模块,通过它开发者可以快速构建复杂的多模式游戏体验。