概述
这一节,我们利用GGA提供的GameplayEffectContainer功能,来演示一遍制作基础近战技能的流程。
使用Container制作近战技能的流程
通常,你在你的近战GameplayAbility资产上配置一个GameplayTag->GameplayEffectContainer的映射(GGA_GameplayAbility已经有了,叫做EffectContainerMap)。

它代表针对不同的事件(由Tag表示),采用不同的TargetingPreset获取目标,并为目标应用多个TargetGameplayEffect。
然后,在近战技能播放动画时,用动画通知为角色发送事件(SendGameplayEventToActor)。
下图则是发送了一个名为GroundPound
的GameplayEvent
。它会触发技能中配置的名为GroundPound
的效果容器。

在技能收到相关事件后,会触发ApplyEffectContainer
。它内部执行流程是:
- 通过EventTag找到EffectContainerMap中对应的Container,创建Container的实例.
- Cotainer实例生成那一刻,内部会完成获取目标并加入到TargetData,以及创建游戏效果实例。
- 将所有创建的游戏效果实例应用到所有获取的目标Actor上,一气呵成。

由于前面的那个动画执行的是一个大范围攻击的技能,所以我们可以看看它的TargetingPreset是如何配置的。
它定义了一个半径1米,长度6米的球形检测,且只检测Pawn。
