本文整理汇总了C++中UAbilitySystemComponent::ApplyGameplayEffectToSelf方法的典型用法代码示例。如果您正苦于以下问题:C++ UAbilitySystemComponent::ApplyGameplayEffectToSelf方法的具体用法?C++ UAbilitySystemComponent::ApplyGameplayEffectToSelf怎么用?C++ UAbilitySystemComponent::ApplyGameplayEffectToSelf使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类UAbilitySystemComponent
的用法示例。
在下文中一共展示了UAbilitySystemComponent::ApplyGameplayEffectToSelf方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: PostGameplayEffectExecute
void UGameplayEffectExtension_LifestealTest::PostGameplayEffectExecute(const FGameplayModifierEvaluatedData &SelfData, const FGameplayEffectModCallbackData &Data) const
{
IGameplayTagsModule& GameplayTagsModule = IGameplayTagsModule::Get();
float DamageDone = Data.EvaluatedData.Magnitude;
float LifestealPCT = SelfData.Magnitude;
float HealthToRestore = -DamageDone * LifestealPCT;
if (HealthToRestore > 0.f)
{
UAbilitySystemComponent *Source = Data.EffectSpec.GetContext().GetOriginalInstigatorAbilitySystemComponent();
UGameplayEffect * LocalHealthRestore = HealthRestoreGameplayEffect;
if (!LocalHealthRestore)
{
UProperty *HealthProperty = FindFieldChecked<UProperty>(UAbilitySystemTestAttributeSet::StaticClass(), GET_MEMBER_NAME_CHECKED(UAbilitySystemTestAttributeSet, Health));
// Since this is a test class and we don't want to tie it any actual content assets, just construct a GameplayEffect here.
LocalHealthRestore = NewObject<UGameplayEffect>(GetTransientPackage(), FName(TEXT("LifestealHealthRestore")));
LocalHealthRestore->Modifiers.SetNum(1);
LocalHealthRestore->Modifiers[0].Magnitude.SetValue(HealthToRestore);
LocalHealthRestore->Modifiers[0].ModifierOp = EGameplayModOp::Additive;
LocalHealthRestore->Modifiers[0].Attribute.SetUProperty(HealthProperty);
LocalHealthRestore->DurationPolicy = EGameplayEffectDurationType::Instant;
LocalHealthRestore->Period.Value = UGameplayEffect::NO_PERIOD;
}
if (SelfData.Handle.IsValid())
{
// We are coming from an active gameplay effect
check(SelfData.Handle.IsValid());
}
// Apply a GameplayEffect to restore health
// We make the GameplayEffect's level = the health restored. This is one approach. We could also
// try a basic restore 1 health item but apply a 2nd GE to modify that - but that seems like too many levels of indirection
Source->ApplyGameplayEffectToSelf(LocalHealthRestore, HealthToRestore, Source->MakeEffectContext());
}
}
开发者ID:WasPedro,项目名称:UnrealEngine4.11-HairWorks,代码行数:39,代码来源:GameplayEffectExtension_LifestealTest.cpp