周期、堆叠与持续时间
Buff 体系的大部分复杂度集中在三个配置上:周期执行、堆叠策略、持续时间管理。
周期性 GE(DOT / HOT)
配置 Duration Policy = Duration,并开启 Period:
GE_Poison(中毒)
├─ Duration Policy: Duration, 10 秒
├─ Period: 2 秒(每 2 秒执行一次)
├─ Modifier: Health -10(每周期扣 10)
├─ Duration 标签: Effect.Debuff.Poison(驱散用)
└─ Granted Tags: State.Poisoned(状态查询用)
- 周期开始时执行一次(配置项"Execute Periodic Effect on Application"可控制);
- 配
PeriodicExecutionPolicy可选首周期是否立即执行。
常见用途:中毒(HOT/DOT)、持续回血光环、充能类技能。
堆叠策略(Stacking)
同一个 GE 重复应用时怎么处理?GE 的 Stacking 选项:
| 策略 | 行为 | 例子 |
|---|---|---|
| No Stacking | 各次独立(各自一份 GE) | 多个来源的中毒各扣各的 |
| Aggregate by Source | 同一来源叠加层数 | 玩家自己的点燃叠层 |
| Aggregate by Target | 目标身上只保留一份并叠层 | Boss 身上最多一层"破甲" |
配置页里还有: - Stack Limit:最多叠几层; - Stack Duration Refresh:叠加时是否刷新持续时间(常见于"中毒越叠越久"设计); - Expiration(到期/remove)触发的 GE。
持续时间管理:用标签来移除
"驱散"在 GAS 里就是"按标签移除 GE":
// 驱散所有负面
ASC->RemoveActiveEffectsWithTags(FGameplayTag::RequestGameplayTag("Effect.Debuff"));
所以每个 GE 都应当在"Duration Tags"或"Granted Tags"里写清楚"我是正面还是负面、什么类型"——这不是可选项,是驱散/查状态的前提。
与动画/事件联动的无限 GE
光环类效果用 Infinite GE,配合 GA 的 AbilityTask(如 WaitOverlap 或周期 Tick 方法)。光环影响范围内动态添加/移除:
// 进入范围:ApplyInfiniteGE;离开:RemoveEffectsWithTags
本章小结
- 周期执行 GE(Period)覆盖 DOT/HOT/充能;首周期是否立即执行可配。
- 堆叠三策略:No Stacking / Aggregate by Source / by Target,叠加叠层与刷新时长可配。
- 每个 GE 必须带"身份标签",驱散按标签移除,光环类用 Infinite GE。
