보키_기록용

TFunctionRef 본문

언리얼/MEMO

TFunctionRef

bokki0117 2022. 9. 16. 11:21

언리얼에서 C++의 std::function 같이 쓰는 것.

 

Lyra를 보다가 나온 코드

typedef TFunctionRef<bool(const ULyraGameplayAbility* LyraAbility, FGameplayAbilitySpecHandle Handle)> TShouldCancelAbilityFunc;

typedef는 TFunctionRef의 저 함수의 이름을 TShouldCancelAbilityFunc으로 정하기 위함.

TFunctionRef 안의 bool은 반환값, ()안은 매개변수.

 

이 TShouldCancelAbilityFunc를 쓰는 곳을 보면

// LyraAbilitySystemComponent.h

void CancelAbilitiesByFunc(TShouldCancelAbilityFunc ShouldCancelFunc, bool bReplicateCancelAbility);

// LyraAbilitySystemComponent.cpp

void ULyraAbilitySystemComponent::CancelInputActivatedAbilities(bool bReplicateCancelAbility)
{
	TShouldCancelAbilityFunc ShouldCancelFunc = [this](const ULyraGameplayAbility* LyraAbility, FGameplayAbilitySpecHandle Handle)
	{
		const ELyraAbilityActivationPolicy ActivationPolicy = LyraAbility->GetActivationPolicy();
		return ((ActivationPolicy == ELyraAbilityActivationPolicy::OnInputTriggered) || (ActivationPolicy == ELyraAbilityActivationPolicy::WhileInputActive));
	};

	CancelAbilitiesByFunc(ShouldCancelFunc, bReplicateCancelAbility);
}

void ULyraAbilitySystemComponent::CancelAbilitiesByFunc(TShouldCancelAbilityFunc ShouldCancelFunc, bool bReplicateCancelAbility)
{
	...
    if (ShouldCancelFunc(LyraAbilityInstance, AbilitySpec.Handle))
    {
    	...
    }
    ...
}

 

CancelInputActivatedAbilities 함수에서 TShouldCancelAbilityFunc를 함수 객체형태로 쓰고있음.

 

음... 이게 맞나...

'언리얼 > MEMO' 카테고리의 다른 글

언리얼 학습하기 좋은 사이트  (0) 2022.10.07
ABILITYLIST_SCOPE_LOCK  (0) 2022.09.16
BlueprintReadOnly should not be on private members  (0) 2022.09.14
BlueprintAssignable  (0) 2022.09.01
Unreal Delegate binding 함수로 안갈때  (0) 2022.08.30
Comments