작성
·
404
0
FOnMontageEnded EndDelegate;
EndDelegate.BindUObject(this, &AABCharacterBase::ComboActionEnd);
AnimInstance->Montage_SetEndDelegate(EndDelegate, ComboActionMontage);
Montage_SetEndDelegate 함수를 보면,
AnimMontage클래스에서 AM이 종료되면 호출시키는 FOnMontageEnded타입의 델리게이트 변수를, 위 함수의 인자로 받는 델리게이트 변수와 치환해서(=) 실행되는 것으로 이해했습니다.
그렇다면 구현되어있는 델리게이트 변수에 ComboActionEnd함수를 바로 구독시키면 안되는건지 궁금해서 여쭤봅니다..
답변 1
0
애님 인스턴스의 Montage_SetEndDelegate 함수가 델리게이트를 요구하기때문에 그에 맞춰서 작성했습니다. 몽타주 객체가 가지고 있는 OnMontageEnded 델리게이트에 직접 바인딩해도 무방하겠습니다만, 결과는 동일할 것으로 보여집니다.
아래는 Montage_SetEndDelegate 함수 소스입니다. 몽타주 객체가 가지고 있는 OnMontageEnded 델리게이트를 바꿔치기하는 것을 볼 수 있습니다.
if (Montage)
{
FAnimMontageInstance* MontageInstance = GetActiveInstanceForMontage(Montage);
if (MontageInstance)
{
MontageInstance->OnMontageEnded = InOnMontageEnded;
}
}