오늘의 목표
- 상호작용 UI 최신화하기
- NPC 오버헤드 퀘스트 UI
상호작용 UI 최신화
내가 컴포넌트를 사용하도록 수정한 코드와 팀원이 개편한 InteractionComponent 코드 사이에 충돌 발생.
최신화를 제때 하지 않아서 생긴 문제이다. 앞으로 제때 최신 코드를 받아서 사용할것을 명심하자...
로직 충돌로 끊긴 부분 연결중.
이상한 오류가 발생했다

기존의 Interactable 인터페이스와 컴포넌트방식을 둘 다 살린 상태로 가려고 했는데, 아무래도 컴포넌트 방식으로 전부 이식하는게 맞을 것 같아 컴포넌트 방식으로 전환하기로 했다.
컴포넌트 방식으로 일단 전환 성공했는데 위젯이 보이지 않아서 왜그런지 원인을 살펴봤더니 위젯 자체에서 생성될 때 호출하던 HideWidget 함수가 원인이었다.
void UCPInteractionPromptWidget::NativeConstruct()
{
Super::NativeConstruct();
// WBP의 원래 색상 저장
CacheDefaultColors();
// HideWidget();
}
주석처리 하니 이제 잘 보인다.

이제 Focus 안 하고 있을 때 위젯이 꺼지는 게 안 된다.

로그를 확인해보니 내가 기존에 설정해놓은 위젯 꺼짐 로그가 아예 뜨지 않는게 보임.
void UCPInteractableComponent::EndFocus(AActor* Interactor)
{
if (InteractWidgetComp)
{
InteractWidgetComp->SetVisibility(false);
}
UE_LOG(LogTemp, Warning, TEXT("[InteractableComponent]위젯 꺼짐!"))
}
EndFocus가 호출되지 않고 있는 것 같다.
// 수정 전
if (!IsValid(NewTarget))
{
OnPromptChanged.Broadcast(FText::GetEmpty(), NAME_None, ECPInteractionDisplayState::Hidden);
return;
}
if (UCPInteractableComponent* NewComp = NewTarget->FindComponentByClass<UCPInteractableComponent>())
{
if (CurrentDisplayState == ECPInteractionDisplayState::Enabled)
{
SetActorHighlight(NewTarget, true);
NewComp->BeginFocus(GetOwner());
}
}
// 수정 후
if (AActor* PreviousTarget = CurrentTarget.Get())
{
SetActorHighlight(PreviousTarget, false);
if (UCPInteractableComponent* PrevComp = PreviousTarget->FindComponentByClass<UCPInteractableComponent>())
{
PrevComp->EndFocus(GetOwner());
}
}
CurrentTarget = NewTarget;
CurrentDisplayState = NewDisplayState;
if (!IsValid(NewTarget))
{
return;
}
UCPInteractableComponent* NewComp = NewTarget->FindComponentByClass<UCPInteractableComponent>();
if (!IsValid(NewComp)) return;
if (CurrentDisplayState == ECPInteractionDisplayState::Enabled)
{
SetActorHighlight(NewTarget, true);
NewComp->BeginFocus(GetOwner());
}
이제 켜기/끄기 정상적으로 작동함.
기존의 채집 액터에도 인터페이스를 사용한 코드가 남아있었다.
인터페이스를 싹 없애고 컴포넌트용으로 개조중.
'Unreal5 공부 > TIL' 카테고리의 다른 글
| 2026/09/09 TIL (1) | 2026.09.09 |
|---|---|
| 2026/09/08 TIL (0) | 2026.09.08 |
| 2026/09/02 TIL (0) | 2026.09.02 |
| 2026/08/28 TIL (0) | 2026.08.31 |
| 2026/08/27 TIL (0) | 2026.08.28 |