코딩의 신 74

김동관·2026년 1월 20일

오늘 한 일

유저테스트 전에 마지막 버그 수정 및 QA 진행

퀘스트 HUD / 타겟 시스템 안정화

오늘은 사이드 퀘스트와 메인 퀘스트를 확장하면서,
퀘스트 HUD, 거리 표시, 상호작용 타겟 관리까지 전반적인 구조를 다듬는 작업을 진행했다.
겉보기엔 UI 작업처럼 보이지만, 실제로는 호출 순서 / 상태 충돌을 정리하는 구조 설계가 핵심이었다.

Collect / Investigate / Destroy 퀘스트 구조 통합

문제

Investigate, CollectItem, DestroyObject 퀘스트마다

진행도는 오르는데

HUD 거리 표시가 안 뜨거나

완료 후에도 거리가 사라지지 않는 문제가 발생

해결

QuestTargetRegistry를 중심으로
→ “HUD에 보여줄 타겟”과
→ “퀘스트 진행에 필요한 TargetID”를 분리

퀘스트 진행 ID  ≠  HUD 표시용 ID

CollectItem은 CollectItemID

Investigate / DestroyObject는 TargetID

HUD는 Registry에 등록된 Transform만 조회

HUD 거리 표시 캐시 방식으로 안정화

기존 문제

타겟이 사라진 뒤에도

마지막 위치가 계속 HUD에 남아 있음

씬 전환 / 텔레포트 후 거리 표시가 꼬임

개선 방식

HUD가 직접 상태를 판단하지 않고,
“마지막 유효 타겟”만 캐시해서 표시

if (target != null)
    currentTarget = target;

Registry에 더 이상 타겟이 없으면

currentTarget = null

거리 텍스트 자동 제거

Update 순서, 호출 타이밍에 영향받지 않게 됨

퀘스트 완료 시 HUD 상태 변화 (시각적 피드백)

추가 기능

퀘스트 진행도가 완료되면

HUD 배경을 초록색

거리 대신 “보상 수령 가능” 표시

if (progress.IsComplete)
{
    backgroundImage.color = completedColor;
    distanceText.text = "보상수령가능";
}

장점

퀘스트 창을 열지 않아도

현재 상태를 HUD만 보고 즉시 인지 가능

Auto / TalkToNPC 퀘스트도 정상 반영

Auto 완료 퀘스트 HUD 문제 해결

문제

시작하자마자 완료되는 퀘스트(CompleteCondition = Auto)가

HUD에서는 완료 처리되지 않음

진행도 0 / 1로 남아 있음

원인

HUD가 QuestState가 아닌 Progress 기준으로 표시하고 있었음

해결

progress.IsComplete 기준으로 HUD 상태 변경

QuestState.Completed와 HUD 표현을 분리

호출 순서 충돌에 대한 구조적 정리

작업 도중 가장 고민했던 부분은:

“이 구조, 나중에 병합하면 호출 순서 꼬이지 않나?”

결론

현재 구조는 호출 순서에 의존하지 않음

이유:

QuestTargetRegistry = 데이터

QuestHUDUI = 표현

HUD는 Registry를 ‘조회’만 함

profile
아이디어 뱅크

0개의 댓글