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;
}
}
* 이 글은 강의 목적이 아닌 자기개발 및 학습 정보로 틀린 부분도 있습니다.