Class GameDev* SheepAdult

[Unreal Engine 5] Interface Execute_ 시 Debug Break 에러 본문

Unreal Engine

[Unreal Engine 5] Interface Execute_ 시 Debug Break 에러

SheepAdult 2024. 7. 15. 23:44

Interface 함수를 구현한 후 호출했을 때 아래와 같은 에러가 발생했다.

{cpp폴더이름}.gen.cpp 파일에서 발생하는 중단점으로 조사식으로 알아보려고 해도 최적화로 인해 디버깅도 쉽지 않은 상황이었다. 그러다 해당 Interface 함수가 구현이 안되면 발생하는 에러인 것을 알게 되었다. 분명 구현은 했는데, Actor가 아닌 Component에서 구현했기 때문에 헷갈려서 이 문제로 꼬박 이틀을 투자했다..

// 이렇게 되어 있던걸
IInterface_Damagable* Target = Cast<IInterface_Damagable>(HitResult.GetActor()->GetComponentByClass(UStatComponentBase::StaticClass()));
...
// actor가 아닌 component에서 구현해놨기 때문에 컴포넌트를 받아와야 한다.
Target->Execute_TakeDamage(HitResult.GetActor(), Damage);


// 이렇게 수정했다
UActorComponent* StatComponent = HitResult.GetActor()->GetComponentByClass(UStatComponentBase::StaticClass());
IInterface_Damagable* Target = Cast<IInterface_Damagable>(StatComponent);
...
IInterface_Damagable::Execute_TakeDamage(StatComponent, Damage);