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 权威结算的桥梁。
- 不合理的目标数据会被服务器拒绝(内置反作弊)。
