GA:可网络化的行动单元

一个 GA 的生命周期

TryActivateAbility(外部请求激活)
  → CanActivateAbility(条件检查:冷却/花费/标签/权限)
  → ActivateAbility(激活,开始执行逻辑)
  → ... AbilityTask 异步等待 ...
  → EndAbility(结束,可选提交冷却与花费)

蓝图里的 Event ActivateAbility / Event EndAbility 对应其中两步。

三个关键配置(决定"何时能用")

字段 作用
CooldownGameplayEffectClass 冷却 GE 类;激活后 ASC 获得 Cooldown.* 标签
CostGameplayEffectClass 花费 GE 类(扣蓝/扣连击点)
Ability Tags 本技能的"身份标签"(如 Ability.Spell)

另外两组标签字段极常用: - Activation Owned Tags:激活期间持有的标签(如 State.Casting); - Activation Blocked Tags:持有这些标签时不能激活(如已有 State.Stunned)。

冷却的"推荐配法"

GAS 有内置冷却字段,也可完全用 GE 自定义(推荐做法见第 4 页),两者差别在于灵活度:

  • 内置字段:GE 里 Modifier 设"Duration = 冷却时间",冷却查询走 Cooldown.* 标签——够用、标准;
  • 完全自定义:自己在 GA 里 Apply 一个含 State.Cooling 标签的 Duration GE——能做"冷却缩减"(通过属性影响 GE 时长)。
GA_Fireball
├─ Cooldown GE: GE_CD_Fireball(Duration 3s,标签 Cooldown.Skill.Fireball)
├─ Cost GE: GE_Cost_Mana(Instant,Mana -15)
└─ Activation Owned Tags: State.Casting

多人下的激活路径

  1. 客户端输入 → TryActivateAbility;
  2. Server 收到请求 → CanActivateAbility(规则判定);
  3. Server 同意 → 回调客户端 ActivateAbility;
  4. 各端执行表现(蒙太奇/特效),规则结算只在 Server。

这个流程是 GA "天然网络化" 的核心:第 1 本手写技能系统时,这套"客户端请求-服务器判定-表现下发"要自己写 RPC,GA 内置了。

本章小结

  • GA 生命周期:请求 → 条件检查 → 激活 → 任务 → 结束。
  • 冷却/花费/标签全部配在 GA 类上;激活期间可持标签(State.Casting)。
  • 客户端请求-服务器判定的网络流程是 GA 的内置能力。