Mark一下项目理解与应用
项目:虚幻4-GAS-GASShooter
描述:可复用TargetData部分。https://github.com/tranek/GASDocumentation#concepts-targeting-data。本文截图里的类名与链接里的工程的类名不一样,但函数名相同(因为截图是我自己理解后按需求建的工程),找同名函数理解即可。
具体蓝图:GA_RocketLauncherPrimaryInstant
注:本文只描述代码执行过程。Client 和Server 之间的逻辑执行区别。
Start:
1.首先从GA_RocketLauncherPrimary中接受输入Custom事件(鼠标左键发射)触发Ability逻辑,然后执行到Batch RPC Try Activate Ability,这个节点用于把ActivateAbility、SendTargetData、EndAbility这三个同一帧处理的RPC批处理。
不过这不是这次重点,只需知道节点内部逻辑作用是:触发GA_RocketLauncherPrimaryInstant的 就行了。
2.到了GA_RocketLauncherPrimaryInstant里,Event Activate Ability,开始执行,如下图。
这里插个小段。
先说在CheckandSetCacheables这个宏,里面有一个生成TargetActor的过程。
这时候仅仅生成一个未配置的TargetActor(ATASGATA_LineTrace)。这个TargetActor的作用是:后续根据检测逻辑(射线检测)生成TargetData。
这里仅仅生成了一个Actor未做任何配置。之后配置的时候需要PerformTrace和MakeTargetData(下文写)
3.然后出宏,回到主逻辑。这里其实是两条路,第一个红圈里的是用于服务器处理的,第二个红圈里是用于客户端处理的。(这部分在本文后面写到客户端Replicate TargetData到服务器的时候还会写清楚ServerWaitForClientTargetData内部逻辑)
服务器:ServerWaitForClientTargetData这个AbilityTask:等待从客户端发送过来的TargetData,如果接收到,就会BroadCast一个ValidData触发HandleTargetData。
客户端:仅仅激活ServerWaitForClientTargetData,什么都不做处理,然后就执行后面的FireRocket事件。在单机状态下,客户端就是Server,ServerWaitForClientTargetData等于没用。
3.Custom Event:FireRocket。(这里直接