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效果蓝图,附加到角色身上
