<개인공부>/[Unity]

[유니티] 텍스트 메시 프로 한글이 네모로 나올때 (Text Mesh Pro 한글 세팅)

BlockDMask 2022. 5. 19. 20:00
반응형

안녕하세요. BlockDMask입니다.
유니티 최신 LTS 버전인 2021.3.X 버전으로 작업을 하던중 디폴트 text 가 UGUI 텍스트가 아닌 Text Mesh Pro 로 변경되어있는걸 알게 되었습니다.
그래서 Text Mesh Pro 로 한글을 작성했더니.. 아니 이게.. 뭔 사각형 언어가 나오는게 아니겠습니까..
이리 저리 검색해서 알아본 결과 Font 세팅을 새롭게 해주면 되더군요
지금부터 그 방법을 하나씩 알려 드리려 합니다.

<목차>
1. 유니티 Text Mesh Pro 전용 폰트 생성 
2. 유니티 Text Mesh Pro 폰트 적용 및 사용

 

1. 유니티 텍스트 메시 프로 한글용 폰트 생성


1-1) 원하는 폰트 다운받아서 Fonts 폴더에 넣기

유니티 프로젝트를 생성해줍니다.
그 후 원하는 폰드를 다운받아 줍니다.
저는 넥슨에서 제공해주고 있는 메이플 스토리 폰트를 예시로 한번 진행해보겠습니다.

- 메이플 스토리 폰트 [다운로드]

위 링크에서 윈도우용 TTF 파일을 다운로드 하면 됩니다.
해당 파일을 다운로드 한 뒤 압축을 풀면 아래와 같은 두개의 TTF 파일이 존재합니다.
Maplestory Bold.ttf
Maplestory Light.ttf

유니티 프로젝트의 Assets > Text Mesh Pro > Fonts 폴더에 넣어줍니다.

 

혹시 Assets에 Text Mesh Pro 폴더가 없으면,
하이라키창에 UI-> Text 를 생성하게 되면 아래와 같은 창이 뜨게 됩니다.

TMP Importer 창이 뜬다면 아래 "Import TMP Essentials" 를 눌러서 텍스트 메시 프로를 임포트 해줍니다.

 

 

1-2) TMP 전용 폰트 생성

이제 TMP 전용 폰트로 만들어 보겠습니다.

유니티 Window > TextMeshPRo -> Font Asset Creator 를 눌러줍니다.

 

소스 폰트 파일 (Source Font File)에 변경하고자 하는  TTF 폰트를 넣어줍니다. 
우리는 Maplestory Bold 를 넣고, 다른 세팅은 아래와 같이 세팅해 줍니다.
Source Font File -> Maplestory Bold
Sample Point Size -> Auto Sizing
Atlas Resolution -> 4096, 4096
Render Mode -> SDFAA

 

옵션을 다 넣은 다음에 Generate Font Atlas 를 적용하면 아래와 같이 화면이 변경 됩니다.

 

Save 를 눌러서 Assets > Text Mesh Pro >Fonts 폴더에 저장해줍니다.

 

 

2. 유니티 텍스트 메시 프로 한글 폰트 적용 및 사용 방법


2-1) Unity Text Mesh Pro 한글 폰트 적용 방법

1번을 잘 따라오셨으면 아래와 같이 Assets > Text Mesh Pro > Fonts 폴더에 해당 파일이 생성되어있을 것 입니다.
이 파일을 선택해서 옵션을 바꿔줄 것 입니다.

 

이 폰트 파일을 누르고 인스펙터창 (Inspector)을 보면
아래쪽 Generation Setting 부분에 Atlas Population Mode 에서 Dynamic 을 선택해 주고

 

Sampling Point Size를 60 정도로 맞춰 줍니다.
(이부분은 각 폰트마다 적절한 사이즈를 넣어야합니다.)
그리고 Apply 를 눌러서 적용해줍니다.

 

이제 하이라키 창에서 Text를 생성해서 폰트(아래 Font asset 쪽)를 우리가 새로 만든 폰트로 적용해주고
한글을 넣어주면 아래와 같이 한글이 잘 나오는 것을 볼 수 있습니다.

 

 

2-2) 코드단에서 사용하는 방법

using TMPro; 네임스페이스를 사용해야하고
데이터 타입(컴포넌트 클래스)는 TextMeshProUGUI 입니다.

예제 코드를 보면 아래와 같이 using TMPro; 를 선언해주고, TextMeshProUGUI로 텍스트 컴포넌트를 받아옵니다.

using UnityEngine;
using TMPro;
public class Example : MonoBehaviour
{
    [SerializeField] private TextMeshProUGUI textTitle;
    private void Start()
    {
        textTitle.text = "BlockDMask 블로그 입니다.";
    }
}

 

텍스트를 연결해서 프로그램을 실행시켜 보면 아래와 같이 텍스트가 잘 적용 된것을 볼 수 있습니다.

 

 

이상으로 
유니티 한글표기 방법과 사용법에 대해서 알아보았습니다. 감사합니다.

반응형