유니티 게임 개발 중 NPC 대화창에서 텍스트가 겹쳐 보이는 문제가 발생했다. 이 글은 그 문제를 해결하기 위해 진행했던 디버깅 과정과 원인을 기록한 포스팅이다.


문제 증상

TMP 겹침 현상

NPC 대화창에 타이핑 효과를 적용하면, 아이템 이름이나 가격 정보가 포함된 문장에서 텍스트가 겹쳐 보였다. 처음엔 한글 폰트나 타이핑 효과 코드에 문제가 있다고 생각했다.


디버깅 과정

  1. 타이핑 효과 코드 점검

    가장 먼저 텍스트를 한 글자씩 출력하는 타이핑 효과 코드를 점검했다. string.Format을 사용해 문자열을 조합하고 TMP_Text 컴포넌트의 text += 방식으로 텍스트를 추가하는 방식이었다.

    • 문제 해결 시도: maxVisibleCharacters 속성을 이용해 텍스트 전체를 미리 로드하고 보이는 글자 수만 늘리는 방식으로 코드를 수정했다.
    • 결과: 타이핑 효과는 더 부드러워졌지만, 텍스트 겹침 현상은 여전했다.
  2. TMP 컴포넌트 및 폰트 설정 점검

    타이핑 효과 코드가 문제가 아님을 확인한 후, 텍스트 렌더링 자체에 문제가 있다고 생각했다. 특히 한글에서만 문제가 발생한다는 점이 단서였다.

    • 문제 해결 시도:
      • TMP_Text 컴포넌트에서 Word Spacing이나 Character Spacing 같은 간격 옵션들을 확인했다.
      • 다른 한글 폰트로 변경해서 테스트해봤지만, 겹침 현상은 사라지지 않았다.
      • 이후 한글 폰트 에셋을 ‘Font Asset Creator’로 재설정하고, ‘Reimport’도 해봤다.
    • 결과: 텍스트 겹침 현상은 여전히 해결되지 않았다.
  3. 문자열 데이터 자체 디버깅

    코드와 폰트 모두 문제가 아니라고 판단한 후, UI에 전달되는 문자열 자체에 문제가 있다고 확신했다. Debug.Log를 이용해 최종 문자열을 콘솔에 출력해봤다.

    • 문제 해결 시도: Debug.Log줄바꿈 문자(\n)가 포함된 텍스트가 출력되는 것을 확인했다. 심지어 콘솔 창에서도 텍스트가 겹쳐 보였다. 이는 문자열이 이미 손상된 상태로 UI에 전달된다는 것을 의미했다.
    • 결과: 문제의 원인이 코드나 폰트가 아닌, 데이터라는 것을 알아냈다.

최종 원인과 해결

수많은 디버깅 끝에 밝혀낸 최종 원인은 정말 간단했다.

itemName (아이템 이름) 변수의 로컬라이제이션 테이블 데이터에 육안으로 보이지 않는 줄바꿈(\n) 문자가 포함되어 있었다.

로컬라이제이션 테이블에 ‘샌드위치’라는 아이템 이름을 입력하는 과정에서, 외부에서 복사/붙여넣기를 하면서 숨겨진 줄바꿈 문자가 함께 붙어 들어간 것이다.

해결 방법: 로컬라이제이션 테이블에서 해당 항목을 찾아서, 기존 내용을 모두 지우고 ‘샌드위치’를 직접 다시 입력했다.

TMP 겹침 해결

결과적으로 모든 텍스트가 정상적으로 표시되었고, 문제는 해결되었다.

댓글남기기