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
多人下的激活路径
- 客户端输入 →
TryActivateAbility; - Server 收到请求 →
CanActivateAbility(规则判定); - Server 同意 → 回调客户端
ActivateAbility; - 各端执行表现(蒙太奇/特效),规则结算只在 Server。
这个流程是 GA "天然网络化" 的核心:第 1 本手写技能系统时,这套"客户端请求-服务器判定-表现下发"要自己写 RPC,GA 内置了。
本章小结
- GA 生命周期:请求 → 条件检查 → 激活 → 任务 → 结束。
- 冷却/花费/标签全部配在 GA 类上;激活期间可持标签(State.Casting)。
- 客户端请求-服务器判定的网络流程是 GA 的内置能力。
