UE5/C++ 基于GAS的角色生命值自动恢复Buff

1.在角色身上挂一个UGameplayEffect类型的模板容器,用于在角色蓝图中手动配置GE

UPROPERTY(BlueprintReadOnly, EditDefaultsOnly)
TArray>RecoveryEffect;

2.在角色C++代码文件中,创建两个方法,一个用于执行恢复效果,一个用于终止恢复效果。

方法需传入一个UGameplayEffect类型的参数

//执行恢复效果
void ActivateRecoveryEffect(TSubclassOf InGameplayEffect)
{if (GetWorld()->IsServer()){if (MMOARPGCharacterBase.IsValid()){//创建效果环境FGameplayEffectContextHandle EffectContext = AbilitySystemComponent->MakeEffectContext();EffectContext.AddSourceObject(MMOARPGCharacterBase.Get());//创建效果实例HandleFGameplayEffectSpecHandle EffectSpecHandle = AbilitySystemComponent->MakeOutgoingSpec(InGameplayEffect, MMOARPGCharacterBase->GetCharacterLevel(), EffectContext);if (EffectSpecHandle.IsValid()){//应用效果至目标AbilitySystemComponent->ApplyGameplayEffectSpecToTarget(*EffectSpecHandle.Data.Get(), AbilitySystemComponent.Get());}}}
}//终止恢复效果
void DeactivationRecoveryEffect(TSubclassOf InGameplayEffect)
{if (GetWorld()->IsServer()){//移除效果AbilitySystemComponent->RemoveActiveGameplayEffectBySourceEffect(InGameplayEffect, AbilitySystemComponent.Get());}
}

3.ActivateRecoveryEffect方法,在角色BeginPlay中进行调用。

DeactivationRecoveryEffect方法,在角色死亡时进行调用。

4.打开UE引擎,创建一个GameplayEffect类型的GE蓝图,角色属性需要在此之前准备好

 然后将GE效果蓝图,附加到角色身上

 


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部