TMP Text를 동적으로 생성해야 하는 일이 있었는데 Component 접근과 Font 변경에서 헤맸다.
그래서 정리해보는 TMP text Script로 동적 생성 및 제어하기!
요약
동적 생성 | gameObject.AddComponent<TextMeshProUGUI>(); |
폰트 변경 | 미리 Font Asset을 Inspector 창에서 받아놓고 TMP component의 Font에 넣어준다. public TMP_FontAsset font = 사용할 폰트; TMP_Text.font = font; |
텍스트 사이즈 변경 | TMP_Text.fontSize = 13; |
텍스트 정렬 | TMP_Text.alignment = TextAlignmentOptions.Midline; |
사실 이것 말고도 옵션이 많은데 기본적으로 텍스트 생성할 때 건드리는 부분이 글씨 크기, 폰트, 정렬이라서 일단 이것만 정리해봤다.
헤맨 부분
보통 TextMeshPro - Text component를 Script에서 받을 때 자료형을 TMP_Text로 선언하기 때문에 AddComponent<TMP_Text>() 로 Text Mesh Pro의 Text component를 더해주어야 하는 줄 알았는데 아니었다...!
AddComponent<TextMeshProUGUI>()를 사용한다! 3D Object - Text Mesh Pro를 생성할 때에는 TextMeshPro component를 더해주면 된다.
Text Alignment
TextMeshPro Text의 장점은 정렬이 다양하다는 것인데 이것을 코드로 설정하기 위해서는 TestAlignmentOptions의 종류를 알아야할 필요가 있다. 마우스를 가져다 대면 하나씩 옵션 이름이 뜬다. 그것을 기초로 enum TextAlignmentOptions에서 접근할 수 있다.
Text Alignment 종류 | |||||
Left | Center | Right | Justified | Flush | Geometry Center |
Top | Middle | Bottom | Baseline | Midline | Capline |
TextAlignmentOption는 Enum(열거형)으로 구현되어 있어서 TextAlignmentOptions.옵션이름 으로 접근하거나, (TextAlignmentOptions)옵션번호로 사용할 수 있다.
옵션 이름은 하나의 옵션만 적용하거나 윗줄+아랫줄 옵션이다. TextAlignmentOptions.Midline, TextAlignment TopLeft 등이다. 옵션의 종류는 아래의 사이트에서 더 자세히 확인할 수 있다.
Enum TextAlignmentOptions
docs.unity3d.com
예제 코드
using UnityEngine;
using UnityEngine.UI;
using TMPro;
public class ConnectManager : MonoBehaviourPunCallbacks
{
public TMP_InputField inputName;
public Transform playerListGrid;
public TMP_FontAsset mapleBold;
public TMP_FontAsset mapleLight;
public void ShowPlayerList()
{
if (playerListGrid.childCount < PhotonNetwork.PlayerList.Length)
{
GameObject textObj = new GameObject();
textObj.transform.SetParent(playerListGrid.transform, false); // set parent
// Add TMP component & Get
textObj.AddComponent<TextMeshProUGUI>();
var textCompo = textObj.GetComponent<TextMeshProUGUI>();
textCompo.text = PhotonNetwork.LocalPlayer.NickName;
textCompo.font = mapleLight;
textCompo.fontSize = 13;
textCompo.alignment = TextAlignmentOptions.Midline;
}
}
}
더 많은 정보는 GOD Scripting API에...!
Unity - Scripting API:
Searching Script Reference, please wait.
docs.unity3d.com
TextMeshProUGUI 문서
Class TextMeshProUGUI
Class TextMeshProUGUI Inherited Members Namespace: TMPro Assembly : solution.dll Syntax public class TextMeshProUGUI : TMP_Text, ILayoutElement Fields m_subTextObjects Declaration protected TMP_SubMeshUI[] m_subTextObjects Field Value Type Description TMP_
docs.unity3d.com
'Unity 공부' 카테고리의 다른 글
[Unity] 베지어 곡선 활용해 오브젝트 곡선 이동 시키기 (0) | 2022.11.03 |
---|---|
[Unity] Photon, Photon View 이용한 멀티 게임 만들기 (간단 예제) (1) | 2022.10.23 |
[Git] 커밋 기록 조작하기 (1) | 2022.10.17 |
[Unity] 3D URP Asset Material 깨지는 문제 (Built-in → 3D URP 변환) (0) | 2022.10.09 |
[Unity] Visual Scripting(BOLT)에 C# script 내 함수, 변수 가지고 오기 (0) | 2022.09.22 |
댓글