캔버스와 텍스트
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입니다.
챌린지
쉬움위쪽의 ZoneText에 탐험가가 있는 구역을 표시하세요.
Explorer.cs에서using TMPro;와 필드public TMP_Text zoneText;를 추가하세요. 씬에서 ZoneText가 해당 이름에 연결됩니다.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 플레이그라운드