写了十篇文章,才发现还没有讲过GAS一直在用的Ability。这里就简单的介绍一下技能类吧。
这里不涉及服务端和客户端之间的关系和交互,因为这方面我也不熟悉。
首先介绍一下Gameplay Ability的基础流程图。图片来自https://github.com/tranek/GASDocumentation#concepts-ga
首先在Character或Controller中尝试启动Ability,然后判断Tag条件,如果能够启动,则进入Activiate Ability。接着会通过Commit Ability判断技能中设置的Cooldown和Cost条件是否能够满足,如果不行则进入EndAbility。接下来则可以在Ability中应用Gameplay Effect。注意,这里的条件都是在一帧内进行的。
更复杂的情况是使用了Ability Task,它可以在Ability中多开出一个线程,我们之前使用的播放Montage,等待Event等等需要执行超出一帧时间的全部都是Ability Task。
将输入和ASC绑定
在ASC系统中我们可以直接将输入与Input绑定,而不需要再通过Try Activate Ability启动技能。这里我就简单介绍一下绑定输入的方法。
创建enum
首先打开以你项目名命名的头文件,我的项目名是GAS_,所以这个文件在文件夹GAS_中,名字是GAS_.h。
在其中定义enum类。
UENUM(BlueprintType)
enum class EAbilityInputID : uint8
{
// 0 None
None UMETA(DisplayName = "None"),
// 1 Confirm
Confirm UMETA(DisplayName =