보키_기록용
TFunctionRef 본문
언리얼에서 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