Menu
CoddyTech

캔버스와 텍스트

Coddy Unity 여정의 실제 게임 만들기 섹션에 포함된 레슨. 60개 중 1번째.

Unity는 UI 시스템으로 화면에 텍스트, 버튼, 막대를 표시합니다. Unity 6에서 GameObject > UI > Text - TextMeshPro를 선택하면 Text (TMP)라는 텍스트 오브젝트가 추가됩니다. 처음 추가할 때 Unity는 텍스트의 글꼴에 필요한 TMP Essentials를 가져올지 묻습니다. 씬에 아직 Canvas가 없으면 Unity가 Canvas를 만들고 그 안에 텍스트를 넣으며, UI 클릭을 처리하는 EventSystem도 추가합니다. Canvas는 카메라가 어디를 바라보든 화면의 고정된 위치에 카메라 화면을 그 위로 덮어 자식 오브젝트를 표시합니다. 이 과정의 모든 씬에서 사용하는 것처럼 Canvas Scaler를 Scale With Screen Size, 1920 x 1080, Match 0.5로 설정하면 화면 크기에 관계없이 레이아웃의 비율이 유지됩니다.

텍스트의 컴포넌트는 TextMeshPro - Text (UI)입니다. 스크립트에서는 이 컴포넌트를 TMPro 네임스페이스에 있는 기본 형식 TMP_Text의 필드에 담고, 문자열인 text 속성을 통해 표시 내용을 바꿉니다. 이 스크립트는 시작할 때 레벨 이름을 지정합니다.

using UnityEngine;
using TMPro;

public class LevelIntro : MonoBehaviour
{
    public TMP_Text titleText;

    void Start()
    {
        titleText.text = "World 2: Ice Caves";
    }
}

Hierarchy에서 Text (TMP) 오브젝트를 Inspector의 Title Text 슬롯으로 드래그하면 Unity가 해당 텍스트 컴포넌트를 필드에 넣습니다. using TMPro;가 없으면 TMP_Text라는 이름을 알 수 없어 스크립트가 컴파일되지 않습니다(CS0246). 슬롯을 비워 두면 첫 번째 titleText.text에서 UnassignedReferenceException이 발생합니다. 스크립트가 작성하는 내용은 Inspector에서 입력한 Text Input을 덮어씁니다. 새 텍스트 오브젝트의 Text Input은 New Text입니다.

challenge icon

챌린지

쉬움

위쪽의 ZoneText에 탐험가가 있는 구역을 표시하세요.

  1. Explorer.cs에서 using TMPro;와 필드 public TMP_Text zoneText;를 추가하세요. 씬에서 ZoneText가 해당 이름에 연결됩니다.
  2. Update()에서 주석 아래에 transform.position.x가 2보다 작으면 zoneText.text를 Zone: Beach로 설정하고, 그렇지 않으면 Zone: Jungle로 설정하세요.

‘플레이’를 누르고 오른쪽으로 걸어 잔디 위로 올라가세요. 텍스트가 Jungle로 바뀝니다. 그런 다음 ‘확인’을 누르세요.

직접 해보기

using UnityEngine;

public class Explorer : MonoBehaviour
{
    public float speed = 4f;

    void Update()
    {
        float move = Input.GetAxisRaw("Horizontal");
        transform.Translate(move * speed * Time.deltaTime, 0f, 0f);

        // ZoneText에 구역을 표시합니다: x = 2 미만에서는 Zone: Beach, 2 이상에서는 Zone: Jungle
    }
}

실제 게임 만들기의 모든 레슨

직접 연습해 보세요: Unity 플레이그라운드