캔버스와 텍스트
Coddy Unity 여정의 실제 게임 만들기 섹션에 포함된 레슨. 56개 중 1번째.
Unity는 UI 시스템을 사용해 화면에 텍스트, 버튼, 막대를 그립니다. Unity 6에서 GameObject > UI > Text - TextMeshPro를 추가하면 Text (TMP)라는 텍스트 오브젝트가 생성됩니다. 처음에는 텍스트의 글꼴에 필요한 TMP Essentials를 가져올지 Unity가 묻습니다. 씬에 아직 Canvas가 없으면 Unity가 Canvas를 만들고 그 안에 텍스트를 넣으며, UI 클릭이 전달되는 EventSystem도 추가합니다. Canvas는 카메라가 어디를 바라보든 화면의 고정된 위치에 카메라 화면 위로 자식 오브젝트를 그립니다. 이 과정의 모든 씬에서처럼 Canvas Scaler를 Scale With Screen Size, 1920 x 1080, Match 0.5로 설정하면 어떤 화면 크기에서도 레이아웃의 비율이 유지됩니다.
텍스트의 컴포넌트는 TextMeshPro - Text (UI)입니다. 스크립트는 기본 형식인 TMP_Text의 필드에 이를 저장합니다. TMP_Text는 TMPro 네임스페이스에 있으며, 스크립트는 문자열인 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을 대체하며, 새 텍스트의 경우 그 값은 New Text입니다.
챌린지
쉬움탐험가는 Explorer.cs에서와 같이 왼쪽 및 오른쪽 화살표 키로 섬을 걷습니다. 화면 상단의 ZoneText에 탐험가가 있는 위치를 표시하세요. 현재는 새 텍스트:라고 표시되어 있습니다.
using TMPro;를 추가하고,TMP_Text유형의zoneText라는 public 필드를 추가하세요. 씬에서는 정확히 그 이름의 필드에 ZoneText를 연결합니다.- 매 프레임마다 탐험가의 x 좌표가 2보다 작으면 텍스트에
Zone: Beach가 표시되고, 2부터는Zone: 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
}
}
이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.