코딩의 신 75

김동관·2026년 1월 21일

오늘 한 일

Quest HUD 거리 표시 버그 해결

오늘은 사이드 퀘스트 진행 중 HUD에 표시되는 거리 값이 잘못 나오는 버그를 추적하고 해결했다.
겉으로 보기엔 단순한 UI 문제처럼 보였지만, 실제 원인은 퀘스트 타겟 선택 로직의 누락이었다.

문제 상황

사이드 퀘스트 「상처 입은 사냥꾼」 진행 중

HUD 마지막 줄에 표시되는 NPC와의 거리가
사냥꾼이 아닌 고블린 기준 거리로 표시되는 현상 발생

퀘스트 자체는 정상적으로 진행되고 있었고,
타겟 NPC ID(TargetID = 10004)도 올바르게 설정된 상태

처음에는

QuestNpcTarget 등록 타이밍

싱글톤 / Awake 문제

Registry 구조 문제
등을 의심했으나, 핵심 원인은 다른 곳에 있었다.

원인 분석

핵심 원인

TalkToNPC 타입 퀘스트에 대한 타겟 반환 로직이 GetQuestTarget()에 누락되어 있었음

switch (quest.CompleteCondition)
{
    case "KillMonster":
    case "Investigate":
    case "DestroyObject":
    case "CollectItem":
        // 타겟 반환 로직 존재
}

TalkToNPC 조건은 HUD에 표시해야 함에도 불구하고

GetQuestTarget()에서 null을 반환

그 결과 HUD는 이전 퀘스트에서 사용하던 타겟(고블린 Transform)을 그대로 유지

거리 계산이 고블린 기준으로 계속 이루어짐

해결방법

GetQuestTarget()에 TalkToNPC 케이스 추가

case "TalkToNPC":
    return QuestTargetRegistry.Instance
        .GetAnyTarget(quest.TargetID);

UD에서 타겟 갱신 방식 점검

GetQuestTarget()가 null을 반환할 경우
이전 타겟을 그대로 유지하지 않도록 구조 확인

필요 시 currentTarget = null로 명시적 초기화

결과

사냥꾼 퀘스트 진행 시 HUD 거리 정상 표시

퀘스트 타입별 타겟 처리 흐름 정리

퀘스트 시스템 확장 시 반드시 모든 CompleteCondition을 처리해야 한다는 교훈 획득

오늘의 정리 / 배운 점

UI 문제처럼 보여도 실제 원인은 로직 누락인 경우가 많다

HUD가 이전 상태를 캐싱하고 있다면
null 처리 정책이 매우 중요하다

퀘스트 타입이 늘어날수록
switch / 분기 로직 누락은 가장 위험한 버그 포인트다

이번 문제는 설계가 잘못된 게 아니라
시스템 확장 과정에서 자연스럽게 발생한 버그였다

profile
아이디어 뱅크

0개의 댓글