개발/유니티

[유니티] 레벨업할때 한글 선택지 오류남(미완)

kimchangmin02 2025. 8. 5. 21:27

아래에서 해결함

2025.08.09 - [유니티] - [유니티] 한글이 네모로 나오는 현상 해결(내가 보기위한)

 

 

 

 

 

 

 

 

The character with Unicode value \uB825 was not found in the [LiberationSans SDF] font asset or any potential fallbacks. It was replaced by Unicode character \u25A1 in text object [DescriptionText].
UnityEngine.Debug:LogWarning (object,UnityEngine.Object)
TMPro.TextMeshProUGUI:SetArraySizes (TMPro.TMP_Text/UnicodeChar[]) (at ./Library/PackageCache/com.unity.textmeshpro@3.0.7/Scripts/Runtime/TMPro_UGUI_Private.cs:1274)
TMPro.TMP_Text:ParseInputText () (at ./Library/PackageCache/com.unity.textmeshpro@3.0.7/Scripts/Runtime/TMP_Text.cs:1902)
TMPro.TextMeshProUGUI:OnPreRenderCanvas () (at ./Library/PackageCache/com.unity.textmeshpro@3.0.7/Scripts/Runtime/TMPro_UGUI_Private.cs:1644)
TMPro.TextMeshProUGUI:Rebuild (UnityEngine.UI.CanvasUpdate) (at ./Library/PackageCache/com.unity.textmeshpro@3.0.7/Scripts/Runtime/TextMeshProUGUI.cs:216)
UnityEngine.Canvas:SendWillRenderCanvases ()

내가 설명을 한글로 적어서 생기는 문제 같은데

 

  • 애초에 한글/유니코드가 지원되지 않는 폰트를 사용해서 생기는 문제입니다.
  • 따라서 한글을 지원하는 새로운 리소스(폰트)를 가져와야 합니다.

문제의 본질: 스크립트 vs. 폰트 에셋

먼저 중요한 점을 짚고 넘어가겠습니다.

  • TextMeshProUGUI.cs (스크립트): 이 코드는 텍스트를 화면에 어떻게 그릴지 방법을 아는 엔진과 같습니다. 이 스크립트 자체에는 문제가 없습니다.
  • LiberationSans SDF (폰트 에셋): 이것은 텍스트를 그릴 때 사용하는 **글자 모양(데이터)**입니다. 기본으로 제공되는 이 폰트 에셋에는 '가', '나', '다' 같은 한글 글자 모양이 들어있지 않습니다.

따라서 오류는 **"엔진(스크립트)은 한글을 그리라는 명령을 받았지만, 글자 모양(폰트 에셋)이 없어서 그리지 못하고 네모(□)로 대체했다"**는 의미입니다.


 

해결 방법: 한글 폰트 추가 및 폴백(Fallback) 설정

해결책은 TextMeshPro에게 "기본 폰트에 없는 글자가 나오면, 이 다른 폰트를 대신 사용해!"라고 알려주는 것입니다. 이것을 '폴백(Fallback)' 설정이라고 합니다.

1단계: 한글 폰트 파일 가져오기 (Import)

가장 먼저, 한글을 지원하는 폰트 파일(.ttf 또는 .otf)이 필요합니다.

  1. 폰트 다운로드: 구글의 Noto Sans KR과 같은 무료 한글 폰트를 다운로드합니다. 이 폰트는 거의 모든 한글을 포함하고 있어 매우 유용합니다.
  2. Unity 프로젝트에 추가: 다운로드한 폰트 파일(예: NotoSansKR-Regular.ttf)을 Unity 에디터의 Project 창으로 드래그 앤 드롭하여 프로젝트에 포함시킵니다.

2단계: TextMeshPro 폰트 에셋 생성하기

TextMeshPro는 .ttf 파일을 직접 사용하지 않고, 자체적인 형식의 '폰트 에셋'으로 변환해야 합니다.

  1. 폰트 에셋 생성기 열기: Unity 상단 메뉴에서 Window > TextMeshPro > Font Asset Creator를 선택합니다.
  2. 설정 및 생성:
    • Source Font File: 방금 프로젝트에 추가한 한글 폰트 파일(예: NotoSansKR-Regular)을 이 곳에 드래그 앤 드롭합니다.
    • Atlas Resolution: 2048 x 2048 정도로 설정합니다. (폰트 품질)
    • Character Set: ASCII로 되어 있다면, Custom Characters나 다른 옵션으로 바꾸어 필요한 한글 범위를 넣어주거나, 단순히 기본 상태로 두어도 폰트가 가진 글자를 기반으로 생성해줍니다.
    • [Generate Font Atlas] 버튼을 누릅니다. 잠시 후 글자들이 텍스쳐에 그려진 모습이 나타납니다.
    • [Save] 버튼을 눌러 생성된 TextMeshPro 폰트 에셋을 저장합니다. (예: NotoSansKR SDF.asset)

3단계: 폴백(Fallback) 폰트 설정하기 (가장 중요!)

이제 원래 폰트(LiberationSans SDF)가 한글을 만나면, 방금 만든 한글 폰트 에셋을 찾아가도록 설정합니다.

  1. 기본 폰트 에셋 찾기: Project 창에서 LiberationSans SDF 폰트 에셋을 찾아 클릭합니다.
  2. 인스펙터(Inspector) 창 확인: LiberationSans SDF의 인스펙터 창을 봅니다.
  3. Fallback Font Assets 설정:
    • Fallback Font Assets 라는 목록이 보일 겁니다.
    • 리스트의 + 버튼을 눌러 칸을 하나 추가합니다.
    • 방금 2단계에서 생성한 한글 폰트 에셋(NotoSansKR SDF)을 이 새로운 칸에 드래그 앤 드롭합니다.

 


 

Unity 프로젝트에 추가: 다운로드한 폰트 파일(예: NotoSansKR-Regular.ttf)을 Unity 에디터의 Project 창으로 드래그 앤 드롭하여 프로젝트에 포함시킵니다.
이때 하나의 폴더를 또 만들어서 하는건가

 

ㅇㅇ

 

 


 

근데 source font file에 드래그앤 드롭하려고하니깐, 금지 표시가 뜨는데 왜지
폴더를 드래그앤 드롭하는게 아닌가

 

이미지에서 보이는 문제는 폴더를 드래그 앤 드롭하려고 시도하고 있기 때문입니다.

Source Font File 필드는 **폰트 파일 그 자체(확장자가 .ttf 또는 .otf인 파일)**를 필요로 합니다. 폰트 파일이 들어있는 폴더를 통째로 넣을 수는 없습니다.

현재 Project 창을 보면 Noto_Sans...라는 항목의 아이콘이 📁 (폴더) 모양입니다. 이는 폰트 파일을 다운로드하고 압축을 푼 뒤, 생성된 폴더 전체를 Unity로 가져왔다는 의미입니다.

해결 방법

  1. 컴퓨터의 파일 탐색기 열기: Unity 에디터가 아닌, 윈도우 파일 탐색기나 Mac의 Finder를 열어서 Noto_Sans 폴더가 있는 위치로 가세요.
  2. 폴더 안에서 실제 폰트 파일 찾기: Noto_Sans... 폴더를 열어보면 그 안에 여러 개의 폰트 파일이 있을 겁니다. 보통 다음과 같은 이름입니다.
    • NotoSansKR-Regular.ttf
    • NotoSansKR-Bold.ttf
    • NotoSansKR-Thin.otf 등등...
  3. 실제 폰트 파일(.ttf)을 Unity로 가져오기:
    이 파일들 중에서 원하는 폰트 파일(일반적으로 NotoSansKR-Regular.ttf)을 Unity 에디터의 Assets/Fonts 폴더 안으로 드래그 앤 드롭하세요.
  4. 아이콘 확인:
    폰트 파일을 제대로 가져왔다면, Unity Project 창에서 아이콘이 📁(폴더) 모양이 아니라 T 또는 A 모양의 폰트 파일 아이콘으로 보일 겁니다.
  5. 다시 시도하기:
    이제 Unity Project 창에 있는 **새로운 폰트 파일 (NotoSansKR-Regular.ttf)**을 Font Asset Creator Source Font File 필드로 드래그 앤 드롭하면 금지 표시 없이 정상적으로 등록될 것입니다.

 


근데 폰트가 여러개인거 같은데 하나만 가져와도 되나
그래도 한글되는건가

 

네, static 폴더 안에 있는 파일 중 하나만 가져와도 한글은 완벽하게 잘 나옵니다.

왜 폰트 파일이 여러 개인가요?

첨부해주신 이미지의 파일들은 각각 다른 폰트가 아니라, 'Noto Sans KR'이라는 하나의 폰트 제품군(Family)에 속한 여러 가지 굵기(Weight)와 스타일입니다.

워드프로세서에서 글자를 "굵게" 하거나 "얇게" 하는 것과 같다고 생각하시면 됩니다.

  • NotoSansKR-Regular.ttf: 보통 굵기 (이것을 사용하시면 됩니다!)
  • NotoSansKR-Bold.ttf: 굵은 글씨체
  • NotoSansKR-Light.ttf: 얇은 글씨체
  • NotoSansKR-Thin.ttf: 더 얇은 글씨체
  • NotoSansKR-Black.ttf: 가장 굵은 글씨체

이 모든 파일들은 '가, 나, 다...' 와 같은 한글 글자 모양 정보를 모두 포함하고 있습니다. 따라서 이 중 어떤 파일을 가져와도 한글 자체는 표시됩니다.

무엇을 가져와야 하나요?

가장 표준적이고 일반적인 것은 NotoSansKR-Regular.ttf 입니다.

따라서 static 폴더 안에 있는 NotoSansKR-Regular.ttf 파일 하나만 Unity의 Assets/Fonts 폴더로 드래그 앤 드롭하시면 됩니다.

나중에 굵은 글씨도 쓰고 싶으면 어떻게 하나요?

나중에 게임 UI에서 제목은 굵게, 내용은 보통 굵기로 표현하고 싶을 수 있습니다. 그럴 때는 NotoSansKR-Bold.ttf 파일도 프로젝트에 가져와서 별도의 폰트 에셋을 만든 뒤, TextMeshPro의 'Font Weight' 기능을 통해 연결해 줄 수 있습니다.


character set은 어케 해줘야하는거지
아스키는 한글있엇던ㄱ사

 

 ASCII는 한글을 포함하지 않습니다. ASCII는 기본적인 영어 알파벳, 숫자, 일부 특수문자만 포함하는 아주 작은 문자 집합입니다.

그렇다면 Character Set을 어떻게 해야 할까요?

가장 간단하고 추천하는 방법

놀랍게도, 그냥 ASCII로 두고 진행하셔도 됩니다.

왜냐하면:
TextMeshPro의 Font Asset Creator는 "Generate Font Atlas" 버튼을 누르는 순간, Character Set에 지정된 문자뿐만 아니라 Source Font (원본 폰트 파일) 자체가 가지고 있는 모든 글자 정보를 바탕으로 폰트 에셋을 만들기 때문입니다.

즉, NotoSansKR-Regular 폰트 파일 안에는 이미 '가'부터 '힣'까지 모든 한글 정보가 들어있기 때문에, Character Set을 ASCII로 둬도 TextMeshPro가 알아서 한글을 포함시켜 줍니다.

더 좋은 품질을 위한 추천 설정

다만, 한글은 글자 수가 매우 많기 때문에, 기본 설정 그대로 생성하면 폰트 품질이 낮아질 수 있습니다. 아래와 같이 설정을 변경하는 것을 강력히 추천합니다.

  1. Atlas Resolution (아틀라스 해상도): 512 x 512는 너무 작습니다. 한글의 모든 글자를 담기에는 턱없이 부족하여 글자가 깨져 보일 수 있습니다. 2048 x 2048 이나 4096 x 4096으로 설정하세요. 숫자가 클수록 폰트가 더 선명해집니다.
    • 추천: 2048 x 2048
  2. Character Set (문자 집합):
    • 방법 1 (가장 간단): 위에서 설명한 대로 그냥 **ASCII**로 둡니다.
    • 방법 2 (정석): **Unicode Range (Hex)**를 선택하고, 아래 입력창에 한글 유니코드 범위를 직접 입력합니다. 이렇게 하면 정확히 한글 영역만 포함시킬 수 있습니다.
      • 현대 한글 전체 범위: AC00-D7A3
      • (참고: 영어, 숫자, 기본 특수문자는 보통 자동으로 포함됩니다.)


근데 이렇게 svae까지 햇는데
왜 또 이 문제가 뜨는거지

 

새로운 한글 폰트 에셋을 성공적으로 만드셨지만, 오류가 계속 뜨는 이유는 아직 TextMeshPro에게 이 새로운 폰트를 언제 사용해야 하는지 알려주지 않았기 때문입니다.

오류 메시지를 다시 자세히 살펴보겠습니다.

The character ... was not found in the [LiberationSans SDF] font asset or any potential fallbacks.

이 메시지는 "내가 LiberationSans SDF 폰트에서 글자를 찾아봤는데, 없어. 그리고 혹시나 해서 대체 폰트(fallback) 목록도 확인해 봤는데, 거기에도 없어 (또는 목록이 비어있어)." 라고 말하고 있는 것입니다.

지금 상황을 비유하자면,

  • 한글을 읽을 수 있는 전문가(NotoSansKR SDF)를 고용했습니다. (1단계, 2단계 완료)
  • 하지만 기존 직원(LiberationSans SDF)에게 모르는 글자가 나오면 이 전문가에게 물어보라고 아직 알려주지 않은 상태입니다. (마지막 3단계 필요)

마지막 해결 단계: Fallback(폴백) 폰트 설정하기

이제 기존 폰트인 LiberationSans SDF에게 우리가 만든 한글 폰트를 "대체 폰트"로 지정해주어야 합니다.

  1. LiberationSans SDF 폰트 에셋 찾기:
    • Project 창의 검색 바에 LiberationSans SDF를 입력하여 검색합니다.
    • 나타나는 LiberationSans SDF 폰트 에셋을 클릭합니다.
      (보통 Packages/TextMesh Pro/Resources/Fonts & Materials 폴더 안에 있습니다.)
  2. 인스펙터(Inspector) 창 확인:
    LiberationSans SDF를 클릭하면 인스펙터 창에 해당 폰트 에셋의 설정이 나타납니다.
  3. Fallback Font Assets 설정 (가장 중요!):
    • 인스펙터 창을 아래로 스크롤하여 Fallback Font Assets 라는 목록을 찾습니다.
    • 리스트의 오른쪽 아래에 있는 + 버튼을 눌러 목록에 빈 칸을 하나 추가합니다.
    • 조금 전에 저장한 한글 폰트 에셋 (NotoSansKR-Regular SDF 또는 직접 저장한 이름)을 Project 창에서 이 새로운 빈 칸으로 드래그 앤 드롭합니다.

이 설정을 완료하면 모든 것이 해결됩니다.

이제 TextMeshPro는 텍스트를 표시할 때,

  1. 먼저 LiberationSans SDF에서 글자를 찾습니다. (영어, 숫자 등)
  2. 만약 여기서 글자(예: '증')를 찾지 못하면,
  3. Fallback Font Assets 목록을 확인하고, 우리가 추가해준 NotoSansKR SDF 폰트 에셋에서 해당 글자를 찾아 화면에 정상적으로 표시합니다.

이렇게 하면 더 이상 네모(□)와 경고 메시지가 나타나지 않을 것입니다.

 


 

 

나타나는 LiberationSans SDF 폰트 에셋을 클릭합니다.<근데 여러개 나타나는데 뭘 클릭해야하지

 

가장 중요한 것은 아이콘 모양입니다.

정답: 파란색 "F" 아이콘을 클릭하세요

결론부터 말씀드리면, 파란색 바탕에 흰색 대문자 "F"가 쓰여 있는 아이콘을 클릭해야 합니다.

  • 파란색 "F" 아이콘: 이것이 바로 TextMeshPro의 폰트 에셋(Font Asset) 본체입니다. 우리가 찾고 있는 Fallback Font Assets 설정은 바로 이 파일 안에 들어있습니다.

다른 아이콘들은 무엇인가요?

  • 글자가 둥글게 모여있는 흑백 이미지: 이것은 **폰트 아틀라스(Font Atlas)**라고 불리는 텍스처(이미지) 파일입니다. 폰트 에셋을 만들 때 생성된 것으로, 폰트에 포함된 모든 글자 모양을 담고 있는 그림 파일이라고 생각하시면 됩니다.
  • 회색 아이콘 (있을 경우): 이것은 폰트를 렌더링하는 데 사용되는 머티리얼(Material) 파일일 수 있습니다.

더 확실한 방법: 검색 필터 변경하기

지금 검색 필터가 In Assets로 되어 있어서, 사용자의 프로젝트 폴더 안에서만 찾고 있습니다. 가끔 기본 폰트가 패키지 폴더에 있어서 검색이 제대로 안 될 수 있습니다.

더 확실하게 원본 폰트 에셋을 찾으려면 다음 방법을 사용해 보세요.

  1. Project 창 상단의 검색 필터에서 In Assets 대신 **All**을 선택하세요.
  2. 그 상태에서 다시 LiberationSans SDF를 검색합니다.
  3. 여러 결과가 나오더라도, 아이콘이 파란색 "F"인 것을 클릭하면 됩니다.

이렇게 하면 TextMesh Pro 패키지에 포함된 원본 폰트 에셋을 정확하게 찾을 수 있습니다.

 

 

근데 f모양이 두개인데 뭘해야하지
또한 뭔 차이지 이 두개

 

결론부터 말씀드리면, 첫 번째 "F" 아이콘을 클릭해야 합니다.


두 "F" 아이콘의 차이점

첨부해주신 이미지를 보면, 각 파일을 클릭했을 때 Unity 창 하단에 전체 경로와 파일 이름이 표시됩니다. 이것이 결정적인 단서입니다.

  • 첫 번째 "F" 아이콘 (클릭해야 할 대상):
    • 파일 이름: LiberationSans SDF.asset
    • 설명: 이것이 바로 TextMeshPro의 기본(주) 폰트 에셋입니다. UI에 TextMeshPro 텍스트를 추가하면 기본적으로 이 폰트가 사용됩니다. 우리가 수정해야 할 대상입니다.
  • 두 번째 "F" 아이콘:
    • 파일 이름: LiberationSans SDF - Fallback.asset
    • 설명: 이것은 이름 그대로 다른 폰트의 '폴백(대체)'으로 사용되도록 미리 만들어진 예시 폰트 에셋입니다. 즉, 이 폰트 자체가 다른 폰트의 대체재 역할을 하는 것입니다.

왜 첫 번째 것을 수정해야 하나요?

우리의 목표는 **기본 폰트인 LiberationSans SDF**가 한글을 표시하지 못할 때, 우리가 만든 NotoSansKR SDF를 찾아가도록 만드는 것입니다.

따라서 우리는 **기본 폰트(첫 번째 F)**의 설정을 변경하여, 그것의 "대체 폰트 목록(Fallback Font Assets)"에 NotoSansKR SDF를 추가해 주어야 합니다.

만약 두 번째 것(... - Fallback.asset)을 수정하면, 그저 '대체용 폰트'의 또 다른 대체 폰트를 설정하는 셈이 되어 우리의 문제를 해결하지 못합니다.

 

 

결론: 지금 설정된 폴백은 한글을 지원하지 않는 다른 영문 폰트입니다.

자세한 설명

지금 Fallback List에 이미 들어있는 항목을 자세히 보세요.

  • LiberationSans SDF - Fallback (TMP_Font Asset)

이것은 우리가 만든 NotoSansKR SDF가 아닙니다. 이것은 TextMeshPro가 기본으로 제공하는, 기존 영문 폰트의 또 다른 버전일 뿐입니다. 아마도 특수 문자나 다른 스타일을 위한 아주 작은 대체 폰트일 것입니다.

따라서 현재 상황은 이렇습니다.

  1. TextMeshPro가 '증'이라는 글자를 **LiberationSans SDF**에서 찾습니다. -> 실패!
  2. "어, 없네? 그럼 대체 폰트 목록을 보자."
  3. 목록에 있는 **LiberationSans SDF - Fallback**에서 '증'을 찾습니다. -> 이 폰트에도 당연히 한글이 없으므로 또 실패!
  4. 결국 "대체 폰트에서도 못 찾았다"는 오류를 다시 보여주는 것입니다.

진짜 해결 방법: 우리의 한글 폰트를 목록에 추가하기

우리가 해야 할 일은 이 목록에 우리가 직접 만든 한글 폰트 에셋을 추가해주는 것입니다.

  1. + 버튼 클릭:
    이미지에서 보이는 Fallback List 바로 아래에 있는 + (더하기) 버튼을 클릭하세요. 그러면 목록에 "None (TMP_Font Asset)" 이라는 새로운 빈 칸이 하나 더 생길 겁니다.
  2. 한글 폰트 에셋 드래그 앤 드롭:
    Project 창에서 우리가 이전에 만들었던 NotoSansKR-Regular SDF 에셋을 찾아서, 방금 새로 생긴 이 두 번째 빈 칸으로 드래그 앤 드롭하세요.

이제 Fallback List에는 두 개의 항목이 있게 됩니다.

  1. LiberationSans SDF - Fallback
  2. NotoSansKR-Regular SDF (우리가 추가한 것)

이렇게 설정하면, TextMeshPro는 첫 번째 폴백에서 글자를 못 찾더라도, 두 번째인 우리의 한글 폰트에서 글자를 찾아 마침내 화면에 올바르게 표시해 줄 것입니다.

 


근데 드래그 앤 드롭이 안되는데

 

TextMeshPro의 기본 폰트가 '패키지' 폴더 안에 있어서 직접적인 수정이 막혀 있는 경우일 수 있습니다. 이럴 때는 다음과 같이 약간 다른 방법으로 접근하는 것이 가장 좋습니다.

  1. 기본 폰트 복제:
    Project 창에서 LiberationSans SDF 폰트 에셋(파란 F 아이콘)을 선택하고 Ctrl + D (Mac에서는 Cmd + D)를 눌러 복제합니다.
  2. 복제된 폰트 이동:
    복제된 LiberationSans SDF 1 파일을 Assets/Fonts 폴더 안으로 옮겨줍니다. 이름도 헷갈리지 않게 MyDefaultFont SDF 등으로 바꿔주면 더 좋습니다.
  3. 복제된 폰트에 폴백 설정:
    이제 우리가 복제해서 옮긴 폰트(MyDefaultFont SDF)를 클릭하고, 그것의 Fallback Font Assets 목록에 NotoSansKR SDF를 추가합니다. 이 파일은 Assets 폴더 안에 있으므로 아무 문제 없이 수정될 겁니다.
  4. TextMeshPro 기본 폰트 변경:
    • 상단 메뉴에서 Edit > Project Settings로 이동합니다.
    • 왼쪽 목록에서 TextMesh Pro를 선택합니다.
    • Settings 탭에서 Default Font Asset 항목을 찾습니다.
    • 이곳에 방금 우리가 복제해서 만든 폰트(MyDefaultFont SDF)를 지정해줍니다.
    •  

최종 해결 방법: 기본 폰트 복제 및 재지정

차근차근 따라오시면 이번에는 100% 해결됩니다.

1단계: 기본 폰트 복제하기

  1. Project 창 검색 바에서 LiberationSans SDF를 검색하세요. (검색 범위는 All로 설정)
  2. 검색 결과에서 파란색 "F" 아이콘 LiberationSans SDF 폰트 에셋을 한 번 클릭하여 선택합니다.
  3. 그 상태에서 키보드로 Ctrl + D (Mac에서는 Cmd + D)를 눌러 파일을 복제합니다.
  4. LiberationSans SDF 1이라는 이름의 복제본 파일이 생성된 것을 확인합니다.

2단계: 복제본 이동 및 이름 변경

  1. 방금 생성된 LiberationSans SDF 1 파일을 Assets/Fonts 폴더로 드래그해서 옮겨줍니다.
  2. 헷갈리지 않도록 파일 이름을 MyDefaultFont SDF와 같이 알기 쉬운 이름으로 바꿔주세요. (선택 사항이지만 추천)

3단계: 복제본에 한글 폴백 설정 (이번엔 성공합니다!)

  1. Assets/Fonts 폴더 안에 있는, 우리가 새로 만든 MyDefaultFont SDF를 클릭하여 인스펙터 창을 엽니다.
  2. 인스펙터 창에서 Fallback Font Assets 목록을 찾습니다.
  3. + 버튼을 눌러 칸을 추가합니다.
  4. Assets/Fonts 폴더에 있는 NotoSansKR-Regular SDF 에셋을 이 새로운 칸으로 드래그 앤 드롭합니다.

이제는 드래그 앤 드롭이 될 겁니다! 왜냐하면 Assets 폴더 안에 있는 파일은 우리가 자유롭게 수정할 수 있기 때문입니다.

4단계: TextMeshPro의 기본 폰트를 우리 것으로 변경하기

이것이 마지막 핵심 단계입니다. 이제 TextMeshPro가 새로 UI 텍스트를 만들 때, 원본 LiberationSans SDF 대신 우리가 만든 MyDefaultFont SDF를 사용하도록 설정해야 합니다.

  1. Unity 상단 메뉴에서 **Edit > Project Settings**로 이동합니다.
  2. 왼쪽 목록에서 **TextMesh Pro**를 선택합니다.
  3. 오른쪽에 나타나는 설정 창에서 Default Font Asset 이라는 항목을 찾습니다.
  4. 현재 이 칸에는 LiberationSans SDF가 지정되어 있을 겁니다. 이 칸에 우리가 만든 MyDefaultFont SDF를 드래그 앤 드롭하거나, 옆의 동그라미 버튼을 눌러 선택해줍니다.

 

 


 

안됨
근데 fallback추가를 누를때마다 이미 기본값의 항목이 나오는데
혹시 falloutback에 한글을 추가해줘야되는건가
우리는 asset 만 건들이고있잖아

 

ㄴㄴ 아님

 

 


 

근데 애초에 한글을 드래그앤 드롭못하나
아니면 한글도 푸른색 정육각형 모양이 아니라
저것들처럼 f모양으로 만들어야하는거 같은데
현재 드래그앤 드롭할수있는 형태가 f형태인거 같은데

 

Fallback List에 추가할 수 있는 것은 오직 파란색 'F' 아이콘을 가진 TextMeshPro 폰트 에셋뿐입니다.

아이콘의 의미

  • 파란색 'F' 아이콘: 우리가 원하는 TextMeshPro 폰트 에셋입니다. 이 안에 글자를 어떻게 그릴지에 대한 모든 정보가 들어있습니다.
  • 흰색 'Aa' 아이콘: 이것은 원본 폰트 파일인 .ttf 파일입니다.
  • 파란색 육면체 아이콘: 이것은 Font Asset Creator로 생성되었지만, 어떤 이유로든 완전한 폰트 에셋이 아니거나 다른 종류의 데이터 에셋으로 만들어진 것입니다. 그래서 시스템이 "이건 폰트 에셋이 아니야" 라고 인식하고 받아주지 않는 것입니다.

해결책: 'F' 아이콘의 한글 폰트 에셋 다시 만들기

어떤 이유에선지 이전에 Font Asset을 만드는 과정에서 무언가 잘못되어 잘못된 형태의 에셋이 생성된 것 같습니다.

괜찮습니다. 이전의 실패한 에셋을 지우고, 이번에 확실하게 'F' 모양의 폰트 에셋을 다시 만들면 모든 것이 해결됩니다.

1단계: 실패한 에셋 삭제하기

  • Assets/Fonts 폴더에서, 문제가 되는 파란색 육면체 아이콘 NotoSansKR-Regular SDF.asset 파일을 선택하고 **과감하게 삭제(Delete)**하세요. 혼란을 없애기 위함입니다.

2단계: Font Asset Creator로 'F' 아이콘 에셋 생성하기 (재도전)

  1. 상단 메뉴에서 **Window > TextMeshPro > Font Asset Creator**를 다시 엽니다.
  2. Source Font File 필드에, Assets/Fonts 폴더에 있는 원본 폰트 파일인 **NotoSansKR-Regular.ttf (흰색 'Aa' 아이콘)**를 드래그 앤 드롭합니다.
  3. 설정 확인 (중요):
    • Atlas Resolution: 2048 x 2048 이상으로 설정되어 있는지 확인하세요.
    • Character Set: ASCII 또는 Custom Range (AC00-D7A3 입력)로 둡니다.
  4. [Generate Font Atlas] 버튼을 누릅니다.
  5. [Save] 버튼을 누릅니다. 저장 위치는 Assets/Fonts 폴더로 지정하고, 이름은 NotoSansKR SDF 등으로 합니다.

3단계: 결과 확인

  • 저장이 완료되면 Assets/Fonts 폴더를 확인하세요.
  • 이번에는 파란색 육면체가 아니라, 다른 폰트들과 똑같은 파란색 'F' 아이콘을 가진 NotoSansKR SDF 에셋이 생성되었을 것입니다!

마지막 단계: 드래그 앤 드롭

 


 

The character ... was not found in the [LiberationSans SDF] font asset ... in text object [DescriptionText].

이 메시지는 "씬(Scene)에 있는 DescriptionText라는 이름의 텍스트 오브젝트가 **원본 LiberationSans SDF**를 사용하고 있어서 한글을 못 찾았다"는 뜻입니다.

즉, 우리의 설정은 완벽하지만, 오류를 일으키는 바로 그 텍스트 오브젝트가 아직 옛날 폰트를 사용하고 있는 것입니다.

우리는 지금까지

  1. MyDefaultFont SDF라는 **"한글 패치가 완료된 새로운 기본 폰트"**를 만들었고,
  2. Edit > Project Settings에서 앞으로 새로 만들 텍스트들의 기본값을 이것으로 설정했습니다.

하지만, 이미 씬에 만들어져 있던 DescriptionText 오브젝트는 이 설정 변경에 영향을 받지 않고, 예전에 설정되어 있던 원본 LiberationSans SDF를 계속 사용하고 있는 것입니다.

최종 해결책: 씬에 있는 오브젝트의 폰트 직접 교체하기

이제 이 텍스트 오브젝트에게 "너 이제부터 새 폰트 써!" 라고 직접 알려주기만 하면 모든 것이 끝납니다.

  1. 오브젝트 찾기:
    Unity 화면 왼쪽의 Hierarchy (계층 구조) 창에서, 오류 메시지에 나온 이름인 **DescriptionText**를 찾아서 클릭하세요.
  2. 인스펙터 창 확인:
    DescriptionText를 클릭하면 오른쪽 인스펙터 창에 TextMeshPro - Text (UI) 컴포넌트가 보일 겁니다.
  3. 폰트 에셋 교체 (마지막 단계!):
    • Font Settings 섹션에 있는 Font Asset 필드를 찾으세요.
    • 아마 이곳에 아직도 원본인 LiberationSans SDF가 지정되어 있을 겁니다.
    • 이 필드에, 우리가 만든 MyDefaultFont SDF를 드래그 앤 드롭하거나, 옆의 동그라미 버튼을 눌러 목록에서 선택해주세요.

 

 


근데 description txt하이아키 못찾겟어

 

 하이러키 창에서 바로 보이지 않는 것이 당연합니다.

그 이유는 DescriptionText가 게임이 시작된 후에 동적으로 생성되는 오브젝트일 가능성이 매우 높기 때문입니다.

오류 메시지는 게임이 실행 중에 발생한 것이므로, 평소에는 하이러키에 보이지 않다가 특정 상황(예: 보상 카드가 화면에 나타날 때)에만 생성되는 것입니다.

RewardPanel 아래에 CardContainer가 있고, 그 안에 RewardCard(Clone) 이라는 복제된 오브젝트들이 있는 것으로 보아, DescriptionText는 바로 이 보상 카드 프리팹(Prefab)의 일부입니다.

찾는 방법 1: 게임 실행 중에 찾기 (가장 확실함)

이 방법이 가장 쉽고 확실합니다.

  1. 게임을 플레이(▶)하세요.
  2. 한글 오류가 발생하는 화면 (보상 카드가 나타나는 화면)까지 진행합니다.
  3. Console 창에 빨간색 오류 메시지가 뜰 겁니다.
  4. 바로 그 오류 메시지를 마우스로 한 번 클릭하세요!

그러면 Unity가 마법처럼, 오류를 일으킨 장본인인 DescriptionText 오브젝트를 하이러키 창에서 자동으로 찾아 파란색으로 하이라이트 해줍니다.

이제 하이라이트된 DescriptionText 오브젝트를 클릭하고, 인스펙터 창에서 Font Asset을 MyDefaultFont SDF로 바꿔주시면 됩니다.

찾는 방법 2: 프리팹(Prefab) 직접 수정하기 (근본적인 해결책)

이 방법이 더 근본적인 해결책입니다. 이렇게 해두면 앞으로 생성되는 모든 보상 카드에 자동으로 적용됩니다.

  1. 게임을 정지하세요.
  2. Project 창에서 Assets/Prefabs 폴더로 이동합니다.
  3. 그 안에서 '보상 카드'에 해당하는 프리팹 파일을 찾으세요. (예: RewardCard.prefab 또는 비슷한 이름)
  4. 찾은 프리팹 파일을 더블클릭하여 프리팹 수정 모드로 들어갑니다.
  5. 이제 하이러키 창이 프리팹 내부 구조로 바뀝니다. 바로 여기에서 **DescriptionText**를 찾으실 수 있습니다!
  6. DescriptionText를 클릭하고, 인스펙터 창에서 Font Asset MyDefaultFont SDF로 교체해줍니다.
  7. 수정이 끝나면 하이러키 창 왼쪽 상단의 뒤로 가기 화살표(<)를 눌러 프리팹 모드를 빠져나옵니다.

 

이건가
이걸 m,y로 마꾸기?