为什么要使用Task?
GA没有Tick,激活接口是单帧执行,GA中的各种异步逻辑,比如播放动画、等待武器碰撞、蓄力等逻辑,都是通过Task异步实现的。
Task并不是GAS的专有概念,而是UE源生的。就和普通的AbilityTask一样,可以监听外部事件,一般要绑定一个多播委托,但如果是ASC内部的时间则可通过回调直接调用。
Task拥有Tick,所以可以处理持续或者等待一段时间的逻辑。
Task建议大家在C++中进行拓展,尽量提供在整个项目,甚至跨项目通用的任务功能。
GAS的即开即用Task
GAS实现了一些现成的Task,这里仅介绍其作用,不分析实现(他实现了52个Task!很有可能一行代码不用写就能做很复杂的技能。。。):
强制运动
包括向某方向位移、模拟跳跃、向目标移动、向点移动等,这些位移是强制的,实际使用的时候可以拓展成与控制GE绑定,或者直接提供Tag。
播放动画蒙太奇
播放蒙太奇,并且可指定播放速度、开始播放的段、对RootMotion的缩放(这个可以做到让RootMotion制作的击退动作可以匹配任意距离)
流程控制
重复执行:可以每间隔一段时间,指定特定次数行为,通过获取AsyncTask对象,还可以在执行过程中动态控制这个流程。
等待一段时间。
监听系列:GAS实现大量的“等待XXX",用来处理各种各样的外部输入。
监听一个能力执行
监听一个能力执行成功
监听属性变化
监听网络输入
监听玩家输入
监听GE
监听重合事件(自身撞上了什么东西):硬要用这个来做近战攻击的命中也可以做,但绝大部分情况不适合,最好实现自己的Task。
监听标签
标签:Task,游戏,实现,可以,GAS,任务,播放,监听,GameplayAbilityTask From: https://www.cnblogs.com/yutuerzf/p/16804670.html