* 델레게이트 : 함수가 끝날때 호출되는 함수
기존코드 : 캐릭터::Attack함수에서 애님인스턴스를 찾아, 애님인스턴스에서 몽타주를 실행
(-) : 느림. 반복적. 불필요. 성능down
개선 : 캐릭터에 IsAttatking 맴버변수, 공격중일때는 바로리턴 => 불필요호출X
델레게이트 => Attack함수 끝나면 isAttaking을 false로.
- 구현
1. 애님인스턴스 호출전에 IsAttacking 검사
void AMyCharacter::Attack()
{
//델레게이트
if (IsAttaking) return;
Animinstance->PlayAttackMontage();
}
2. 몽타주가끝나면 OnAttackMontageEnded함수를 실행하라.
UFUNCTION()
void OnAttackMontageEnded(UAnimMontage* Montage, bool binterrupted);
맘대로 만들기X, 형식을 지켜야함
// Called when the game starts or when spawned
void AMyCharacter::BeginPlay()
{
Super::BeginPlay();
Animinstance = Cast<UMyAnimInstance>(GetMesh()->GetAnimInstance());
Animinstance->OnMontageEnded.AddDynamic(this, &AMyCharacter::OnAttackMontageEnded);
}
3. OnAttackMontageEnded 구현
void AMyCharacter::OnAttackMontageEnded(UAnimMontage* Montage, bool binterrupted)
{
IsAttaking = false;
}
델레게이트 활용 : 충돌처리 등등..
'UE5' 카테고리의 다른 글
블렌드 스페이스 (0) | 2022.08.14 |
---|---|
애니메이션 노티파이 (0) | 2022.08.14 |
애니메이션 몽타주 (0) | 2022.08.14 |
스테이트 머신 (0) | 2022.08.14 |
애니메이션 기초 (0) | 2022.08.14 |