UnrealEngine GameplayAbilitySystem Effect 修饰符值蓝图或C++更改方法 Set by Caller

GE 设置 

蓝图方法

C++

.h

#include "AbilitySystemComponent.h"

public:
	UFUNCTION(BlueprintCallable, meta=(WorldContext=WorldContextObject, Keywords="Apply Effect"), Category="Star Chapter Global|GameplayAbilitySystem|Effect")
	static FActiveGameplayEffectHandle ApplyGameplayEffectToSelfSetByCallerMagnitudes(
	UAbilitySystemComponent* AbilitySystemComponent,
	TSubclassOf<UGameplayEffect> GameplayEffectClass,
	float Level,
	TMap<FGameplayTag, float> NewSetByCallerValues
	);

	UFUNCTION(BlueprintCallable, meta=(WorldContext=WorldContextObject, Keywords="Apply Effect"), Category="Star Chapter Global|GameplayAbilitySystem|Effect")
	static FActiveGameplayEffectHandle ApplyGameplayEffectToSelfSetByCallerMagnitude(
	UAbilitySystemComponent* AbilitySystemComponent,
	TSubclassOf<UGameplayEffect> GameplayEffectClass,
	float Level,
	FGameplayTag SetByCallerTag,
	float NewSetByCallerValue
	);
.cpp

FActiveGameplayEffectHandle UStarChapterBlueprintFunctionLibrary::ApplyGameplayEffectToSelfSetByCallerMagnitudes(
	UAbilitySystemComponent* AbilitySystemComponent, TSubclassOf<UGameplayEffect> GameplayEffectClass, float Level,
	TMap<FGameplayTag, float> NewSetByCallerValues)
{
	if (AbilitySystemComponent)
	{
		FGameplayEffectSpecHandle SpecHandle = AbilitySystemComponent->MakeOutgoingSpec(GameplayEffectClass, Level, AbilitySystemComponent->MakeEffectContext());
		for (auto Element : NewSetByCallerValues)
		{
			SpecHandle = UAbilitySystemBlueprintLibrary::AssignTagSetByCallerMagnitude(SpecHandle, Element.Key, Element.Value);
		}

		return AbilitySystemComponent->ApplyGameplayEffectSpecToSelf(*SpecHandle.Data.Get());

	}
	return FActiveGameplayEffectHandle();
}

FActiveGameplayEffectHandle UStarChapterBlueprintFunctionLibrary::ApplyGameplayEffectToSelfSetByCallerMagnitude(
	UAbilitySystemComponent* AbilitySystemComponent, TSubclassOf<UGameplayEffect> GameplayEffectClass, float Level,
	FGameplayTag SetByCallerTag, float NewSetByCallerValue)
{
	if (AbilitySystemComponent)
	{
		FGameplayEffectSpecHandle SpecHandle = AbilitySystemComponent->MakeOutgoingSpec(GameplayEffectClass, Level, AbilitySystemComponent->MakeEffectContext());
		SpecHandle = UAbilitySystemBlueprintLibrary::AssignTagSetByCallerMagnitude(SpecHandle, SetByCallerTag, NewSetByCallerValue);
		return AbilitySystemComponent->ApplyGameplayEffectSpecToSelf(*SpecHandle.Data.Get());
	}
	return FActiveGameplayEffectHandle();
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值