技能系统概述

声明
- 你可以参考Demo项目学习如何为技能替换动画,修改参数。以及如何为游戏效果修改数值等等。
- GCS的基础Demo中,包含了Paragon的一些角色和动画已经预先配置好,你可以参考他们进行使用。
- 本文中涉及到的动画,均为Space.Bar.Anim的第三方动画,如果你拥有它们,你可以直接导入到你的项目,一切都设置好了,只需少量调整,你就可以使用了。
- 动画中包含的特效/声效,采用情景效果系统配置,意味着动画没有直接引用具体的资产,所以你可以通过添加不同的EffectsContextLibray来整体替换掉对应的VFX/SFX,而无需挨个在动画中进行调整。
- 本文中提到的输入触发方式和技能触发条件均可以通过配置进行修改,而非硬编码。
推荐你先学习一下通用技能系统的基础。
技能概览
GCS提供大量预置好的技能,且每一个技能提供可调整的参数,你可以直接使用。

技能关系表
GCS提供的技能之间的打断/阻挡关系均由技能Tag关系表决定,因此你可以在复用这些技能的前提下,完全应用不同的技能的打断/阻挡规则,而不是创建一堆子类并在一堆Tags中迷失方向。

你应该复制一份默认的关系表,并按照你的游戏设计规则进行修改。
输入到技能激活
你可以通过输入控制设定 来完全自定义技能的输入触发方式。
GCS提供了默认配置好的控制设定,你应该复制一份,并按照你的游戏设计需求去定义什么输入ji'huo什么技能。
技能动作集
GCS_AbilityActionSetSetting
技能动作集设置是一个数据资产,在里面你可以配置任意技能在不同的情况下会使用到的不同的技能动作,
而一个技能动作则是一个结构体,包含了该技能动作的基本信息,如要播放的Montage,及其播放方式。

创建技能动作集设置
你通过创建类型为GCS_AbilityActionSet
的数据资产,来创建新的技能动作集设置。建议以AAS_作为前缀为动作集设置命名。

你应该为不同类型的武器创建对应的技能动作集设置,这样切换不同武器时,使用同样的技能,但是播放的动作是不一样的。

而每一个运动集设置中,包含了针对不同技能其对应的所有潜在技能动作集。

分层技能动作集
在配置技能动作集时,你还可以采用分层的方式实现:在特定条件下变招。
下面的例子就实现了:同一个攻击技能,但是持有的武器类型不同,其招式/连招组合也会不一样。

启用分层后,会优先从分层的技能动作集中查询满足条件的动作,然后回退到默认的Actions。
查询技能动作
在GameplayAbility中,你通过战斗接口调用QueryAbilityActions来查询某个技能对应的技能动作。
对于直接激活的技能,用法一般如下:

对于通过事件激活的技能,用法一般如下:

如何使用返回的AbilityActions完全由技能本身的设计决定。最简单用法一般如下:

底层逻辑
在底层,AbilityActions实际上是由战斗接口的实现对象通过“技能动作集设置”查询得出的。

在案例项目中,BC_GCS_DemoCombatCore组件通过当前的武器返回武器所关联的技能动作集。