본문 바로가기
Unity/Tip

[Unity] TextMeshPro 사용법 및 한글 오류 해결방법

by Classic Master 2024. 5. 19.
728x90

Unity - TextMeshPro

TextMeshPro는 Unity 게임 엔진에서 텍스트 렌더링 품질을 향상시키는 고급 텍스트 레이아웃 및 렌더링 시스템입니다. 주요 기능으로는 고해상도 텍스트 렌더링, 다양한 텍스트 스타일링 옵션, 텍스트 정렬 및 서식 설정, 그리고 텍스트 효과(그림자, 윤곽선 등)를 포함합니다. TextMeshPro는 동적 텍스트 생성과 고성능을 제공하며, UGUI 및 Unity의 기존 텍스트 컴포넌트보다 더 많은 제어와 유연성을 제공합니다.

 

먼저 Hierarchy 창에서 UI - Text - TextMeshPro를 추가해보겠습니다.

 

그 후 TextMeshPro를 사용하기 위해 필요한것들을 Import하라고 문구가 나옵니다.

Import TMP Essentials를 클릭해 Import하겠습니다.

Hierarchy 창에서 Canvas 안에 Text (TMP)가 생겼을거에요. 클릭을 해보겠습니다.

Inspector 창에서 사용할 수 있는 기능들을 살펴보겠습니다.

  • Font Asset : 텍스트에 사용할 글꼴 자산을 지정합니다.
  • Material Preset : 텍스트의 렌더링 스타일을 정의하는 머티리얼 프리셋을 선택합니다.
  • Font Style : 글꼴의 스타일(굵게, 기울임꼴 등)을 설정합니다.
  • Font Size : 텍스트의 크기를 설정합니다.
  • Auto Size : 텍스트 박스에 맞게 글꼴 크기를 자동으로 조정합니다.
  • Vertex Colo r: 텍스트의 기본 색상을 설정합니다.
  • Color Gradient : 텍스트에 그라디언트 색상을 적용합니다.
  • Override Tags : 텍스트 내의 스타일 태그를 무시하고 설정된 스타일을 적용합니다.
  • Spacing Options : 글자, 단어, 줄 간격을 조정합니다.
  • Alignment : 텍스트의 정렬 방식을 설정합니다.
  • Wrapping Mode : 텍스트 줄바꿈 방식을 정의합니다.
  • Overflow : 텍스트가 박스를 넘칠 때의 동작을 설정합니다.
  • Horizontal Mapping : 텍스트의 가로 방향 텍스처 매핑 방식을 설정합니다.
  • Vertical Mapping : 텍스트의 세로 방향 텍스처 매핑 방식을 설정합니다.

전 Text보다 더 많은 기능들을 제공하고 있습니다.

 

한글 깨짐 오류 해결방법

다음으로 넘어가기 전에 폰트에서 한글을 지원하지 않기 때문에 발생하는 오류 먼저 해결하는 방법을 알아보겠습니다.

 

Window - TextMeshPro - Font Asset Creator로 이동합니다.

다음 SourceFont에서 한글 폰트를 선택하고 클릭합니다.

* 여기서 한글 폰트는 자기가 직접 다운로드 받은 파일을 준비하고 설정합니다.

 

그 후 Character Set에서 Custom Range를 선택 합니다.

영어 범위 값 32-126
한글 범위 값 44032-55203
한글자모 값 12593-12643
특수문자 값 8200-9900
32-126,44032-55203,12593-12643,8200-9900를입력합니다.

Generate Font Atlas를 선택하여 변경 후 Save하겠습니다.

 

폰트를 다시 적용해주시고 확인해보시면 잘 출력이됩니다 :)

 

 

유니티 TextMeshPro 스크립트 사용

기본적인 사용방법 GUI 

using TMPro;
using UnityEngine;

public class Example : MonoBehaviour
{
    public TextMeshProUGUI textMeshProUGUI;

    void Start()
    {
        // TextMeshProUGUI 컴포넌트를 가져옵니다.
        textMeshProUGUI = GetComponent<TextMeshProUGUI>();
        
        // 텍스트를 설정합니다.
        textMeshProUGUI.text = "Hello, TextMeshPro!";
        
        // 텍스트 크기를 설정합니다.
        textMeshProUGUI.fontSize = 24;
        
        // 텍스트 색상을 설정합니다.
        textMeshProUGUI.color = Color.red;
    }
}

 

기본적인 일반 사용방법

using TMPro;
using UnityEngine;

public class Example : MonoBehaviour
{
    public TextMeshPro textMeshPro;

    void Start()
    {
        // TextMeshPro 컴포넌트를 가져옵니다.
        textMeshPro = GetComponent<TextMeshPro>();
        
        // 텍스트를 설정합니다.
        textMeshPro.text = "Hello, 3D TextMeshPro!";
        
        // 텍스트 크기를 설정합니다.
        textMeshPro.fontSize = 48;
        
        // 텍스트 색상을 설정합니다.
        textMeshPro.color = new Color32(255, 255, 0, 255); // Yellow color
    }
}

 

TextMeshProUGUI
용도 : UI 요소로 사용
렌더링 : Unity의 Canvas 시스템을 사용
사용 예시 : 버튼, 텍스트 박스, 드롭다운 메뉴 등 UI 텍스트

TextMeshPro
용도 : 3D 텍스트 또는 월드 공간 텍스트로 사용
렌더링 : MeshRenderer를 사용
사용 예시 : 3D 환경의 라벨, 게임 내 텍스트 요소 등

요약하면, TextMeshProUGUI는 UI 텍스트를 위한 컴포넌트이고, TextMeshPro는 3D 또는 월드 공간 텍스트를 위한 컴포넌트입니다.

 

예시

아이템을 불러오는 스크립트를 작성해보겠습니다.

using TMPro;
using UnityEngine;

public class ItemNameDisplay : MonoBehaviour
{
    public TextMeshProUGUI itemNameText;

    void Start()
    {
        if (itemNameText == null)
        {
            itemNameText = GetComponent<TextMeshProUGUI>();
        }
        
        // 아이템 이름을 설정하는 메서드 호출
        SetItemName("Sword of Destiny");
    }

    public void SetItemName(string itemName)
    {
        itemNameText.text = itemName;
    }
}

 

* 이 글은 강의 목적이 아닌 자기개발 및 학습 정보로 틀린 부분도 있습니다.

728x90
반응형