虚幻四Gameplay Ability System入门(8)-Gameplay Effect详解(3)

这一部分给GE剩下的部分收个尾,如果还想要进一步了解GE背后的各个原理,建议深入源码的海洋遨游(笑)。

Gameplay Effect

这一部分是GE的核心,之前的两篇文章主要讲的也是这一部分,GE实现的主要是如何对角色状态和属性进行修改。

Untitled.png

Period

这一部分定义的是GE的触发周期,当GE的Duration Policy为Infinite或Duration后,可以在这里设置触发周期。如果设置以后,GE的应用状态类似于每Period触发一次的Instant
Untitled 1.png

Application

这里的第一个属性,Chance to Apply to Target定义的是该GE向目标成功应用的概率。经过我的测试,这个属性只影响第一次申请的概率,如果GE是Duration或者Infinite的效果,成功应用后这个概率就不会再影响GE的效果。
Untitled 2.png

我们也可以自己实现一个应用的要求。通过新建UGameplayEffectCustomApplicationRequirement的派生类,重写函数CanApplyGameplayEffect来实现。具体的实现我还没有测试过,有兴趣的可以自己去试试看。

/** Class used to perform custom gameplay effect modifier calculations, either via blueprint or native code */ 
UCLASS(BlueprintType, Blueprintable, Abstract)
class GAMEPLAYABILITIES_API UGameplayEffectCustomApplicationRequirement : public UObject
{

public:
	GENERATED_UCLASS_BODY()
	
	/** Return whether the gameplay effect should be applied or not */
	UFUNCTION(BlueprintNativeEvent, Category="Calculation")
	bool CanApplyGameplayEffect(const UGameplayEffect* GameplayEffect, const FGameplayEffectSpec& Spec, UAbilitySystemComponent* ASC) const;
};

Tags

这个部分是定义影响GE效果的标签设置。
Untitled 3.png

GameplayEffectAssetTag

这里放的是GE本身拥有的标签,本身没有特别的功能,用来表明GE的身份。这里的标签是为GE自己所有,不会添加给角色的ASC。

GrantedTags

这里的标签会在GE的作用状态中,添加给Apply该GE的Actor的ASC,等于说角色会在GE的应用状态中获得这些标签。

Ongoing Tag Requirements

这个部分决定的是GE的开关状态,当GE成功应用后,还需要满足Ongoing Tag才能起作用。这个标签本身影响的只是GE是否起作用,但GE仍然是挂在角色的ASC上的,可以添加Tag让GE重新起作用。

Application Tag Requirements

这个标签决定的是GE是否能被应用,如果不满足Application Tag,GE就会直接失败。

Removal Tag Requirements

如果满足Removal Tag,GE就会直接从角色的ASC中被移除。这个标签同样可以起到Application Tag Requirements的作用。

剩下的两个部分我自己没有测试过。

Display

这里比较重要的是Gameplay Cue,我们可以通过设置这里的Gameplay Cue Tags,在GE应用的状态下触发具有和这里的标签相同的Gameplay cue。经过我的测试,当GE的时间状态为Infinite或Duration的时候,GC actor中可以通过On Executed每一次周期都触发一次GC
Untitled 4.png
Untitled 5.png

上图的Magnitude Attribute数据可以在gameplay cue中的Parameters中获取,我们可以用来设置诸如粒子特效的大小,类型之类的。如果没有设置,这里默认返回的是GE的level。
Untitled 6.png

Immunity

这里设置的是GE应用状态时的免疫效果,当GE处于执行状态时,其它带有相同标签的GE将无法应用于角色。比如角色处于火焰免疫状态的时候,它可以避免所有带有Fire标签的GE。
Untitled 7.png

Stacking

默认状态下,每一次GE被应用时,都会生成一个该GE的实例添加到角色的ASC上。但是我们可以通过设置Stack Limit Count来限制GE实例的数量。它有两种类型,一种是根据Source ASC的数量判断,一种是根据Target ASC拥有的GE数量判断。
Untitled 8.png

Granted Abilities

通过Granted Abilities可以在GE持续时间的状态中给予角色某种Ability。
Untitled 9.png

到这里为止,我对GE的介绍和应用就算介绍完成了。

下一期我计划实现一个地爆天星神罗天征的效果哈哈。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值