视频介绍
请从12:10分开始看
系统概述
通用效果系统(GES),用于在任意情境下播放声效和特效,主要用于自动化脚步声/效,也可用于其他需要声音和视觉反馈的场景。
初步设置
在安装此插件后,请确保你的项目启用了Niagara插件。
情景效果组件
为角色添加GES_ContextEffect
组件即可。

- DefaultEffectContexts:指定该组件默认的Tags,用作播放效果时的SourceTags。如果使用TagsProvider,通常可以不设置。
- DefaultContextEffectsLibraries:指定多个VFX/SFX库,播放请求将从这些库中寻找合适的效果。
- AutoSetupTagsProvider:勾选后,该组件在BeginPlay时会查询Actor及其组件树中第一个实现了IGameplayAssetTagInterface接口的对象,将其作为TagsProvider。
vfx/sfx库
这是一个类型为GES_ContextEffectsLibrary的数据资产,可以在内容浏览器中创建。
下图展示了两个配置好的情景效果库:
- CFX_MMS_Sfx:用于控制脚步声/效,定义了不同类型的脚步与不同材质表面接触时播放的声音。
- CFX_CombatFX:用于战斗效果控制,定义了不同武器在不同情况下播放的声音。

- EffectTag:指定效果的名字Tag,在API调用时使用该Tag以决定播放的效果。
- Effects:在Effects数组中添加任意声音资产及Niagara/Cascade特效资产。
- SourceTagQuery:播放效果时,只有传入的SourceTags与指定的SourceTagQuery匹配时,才会播放配置的效果。
- TargetTagQuery:在API调用时,可以传入其他对象的Tags以进一步匹配合适的效果。
编辑器设置

在项目设置中,Game部分可以找到GES的全局设置,在这里可以将项目中用到的物理材质映射为GameplayTag。同时,可以启用编辑器预览并指定使用的预览设置。
编辑器预览

上图是一个编辑器预览案例,选择在动画序列播放窗口中从哪个VFX/SFX库寻找声音和效果,同时通过PreviewContexts模拟不同情景。
你需要在全局设置中启用编辑器预览,这样你在动画序列播放器中滑动时间轴时,才会触发对应的效果,否则什么也不会发生。
通过动画播放声效/特效
手动放置Play Context Effects动画通知
下图利用情景效果通知来与武器挥舞的动作进行配合。


取决于你如何配置你的情景特效库,角色会在播放此动作时,根据情景效果组件所拥有的Tags,决定最合适的音效/特效进行播放。

自动化脚步声放置
此部分用于自动化设置角色的脚步放置及脚步声。任何需要脚步效果的动画需添加如下动画修改器:

- AM_FootFX:自动检测动画中脚步着地的时间,并添加相应的动画通知。
- AM_FootstepContextEffect:根据脚步着地的位置自动添加“
Play Context Effects
”的动画通知。

下图是Play Context Effects
动画通知上的参数。通过EffectIn指定需要播放的效果,例如着陆动画使用Footstep.Land,行走动画使用Footstep.Walk。

通过API播放声效/特效
在某些情况下,你可能想通过蓝图播放声效/特效,以下是简单的API:

- Attached:勾选后需传递ComponentToAttach到Input参数中。
- SourceContextType:选择Override时,将直接使用传递的SourceContext作为SourceTags查询效果;选择Merge时,将合并传递的SourceContext与效果组件本身的Tags。
- TargetContext:可选,根据游戏机制可能需要传递TargetContext以进行复杂效果查询。
这是底层API,通常在其他系统中使用。例如,武器添加情景效果组件,在武器击中环境时,将武器类型Tag作为Contexts播放击中效果。
GAS集成
GES中的情景一般指GameplayTags,EffectContext组件除了设置默认Contexts外,还可以通过外部对象提供GameplayTags,该对象需实现GameplayTagsAssetInterface
,通常为GameplayAbilities插件中的AbilitySystemComponent
。
调用EffectContext组件上的“SetGameplayTagsProvider”,并传入技能组件,即可用GAS驱动GES。

在GameplayCue中使用GES
假设有一个Cue用于武器击中目标角色后播放声效/特效,可以将Cue的相关参数作为播放情景特效的参数,让GES处理声效/特效播放。

采用这种方式,只需一个简单的Cue即可实现多种机制。