관리 메뉴

Mini

델레게이트 본문

UE5

델레게이트

Mini_96 2022. 8. 14. 18:42

* 델레게이트 : 함수가 끝날때 호출되는 함수

기존코드 : 캐릭터::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