TargetData:技能目标的流转

TargetData 是 GAS 里"选择目标"的统一容器:点选、范围、矩形、附近敌人、飞行物的目标——全部打包成 TargetData,再交给 GA 结算。

GameplayAbilityTargetActor

场景里生成一个 TargetActor,负责"采集目标":

内置 TargetActor 用途
AGameplayAbilityTargetActor_Trace 射线(瞄准、点击地面)
AGameplayAbilityTargetActor_SphereTrace 球形范围(范围伤害)
AGameplayAbilityTargetActor_Cone 锥形(顺劈)
AGameplayAbilityTargetActor_GroundTrace 选地面位置(AOE 圈)

WaitTargetData 任务用它,完成后输出 TargetData。

流程:选目标 → 结算

Event ActivateAbility
   → WaitTargetData(GroundTrace,玩家选地面点)
      → OnValidData(拿到 TargetData)
         → CommitAbility
         → Apply GE(范围伤害,目标 = TargetData 里的 Actors)
      → OnCanceled → CancelAbility

多人下的关键:TargetData 会被同步到服务器——客户端选点,服务器拿到同一份 TargetData,结算权威。这解决了一个经典难题:"客户端说我瞄准了 Boss,服务器怎么知道"。GAS 把它做进了框架。

TargetData 防作弊

Client Predictive 的 TargetData 会被服务器校验:如果客户端发来的目标数据"不合理"(距离超限制),服务器可以拒绝激活。这是 GAS 内置的反作弊能力之一。

TargetDataFilter

过滤规则:只选敌人 / 只选活着的 / 忽略自己。配一个 TargetDataFilter,TargetActor 自动套用。比蓝图里自己写过滤循环省事且权威。

本章小结

  • TargetData 是"选目标"的统一容器,TargetActor 负责采集、Filter 负责过滤。
  • TargetData 会同步到服务器,是 Client-Skill→Server 权威结算的桥梁。
  • 不合理的目标数据会被服务器拒绝(内置反作弊)。