본문으로 건너뛰기
Unity C# 기초집LESSON 14

UI 기초

난이도초급
예상 시간40분
선수지식13강 분류 판정

14강. UI 기초

1. 이번 강의에서 해결할 문제

분류 결과가 Console에만 보여 플레이어가 점수와 목숨을 알 수 없습니다. 게임 규칙을 UI Component에 넣지 않고 표시 책임만 가진 클래스를 만듭니다.

2. 학습 목표

3. 핵심 개념

Canvas는 UI 렌더링 공간이고 RectTransform은 앵커와 화면 배치를 담당합니다. Presenter는 숫자를 계산하지 않고 받은 상태를 사람이 읽을 문자열로 바꿉니다. Unity 6 템플릿과 패키지 구성에 따라 TextMeshPro 리소스 가져오기 화면이 다를 수 있습니다.

4. 단계별 실습

Unity Editor 작업

  1. UI > Canvas를 만들고 이름을 GameHUD로 바꿉니다.
  2. TextMeshPro Text 세 개를 ScoreText, LivesText, StateText로 만듭니다.
  3. 좌상단·우상단·중앙에 Anchor를 설정합니다.
  4. EventSystem이 자동 생성됐다면 하나만 유지합니다.

C# · 파일 경로: Assets/DeliverySorter/Scripts/UI/HUDPresenter.cs

HUDPresenter.cs
using TMPro;
using UnityEngine;

public sealed class HUDPresenter : MonoBehaviour
{
[SerializeField] private TMP_Text scoreText;
[SerializeField] private TMP_Text livesText;
[SerializeField] private TMP_Text stateText;

private void Awake()
{
if (scoreText == null || livesText == null || stateText == null)
{
Debug.LogError("HUD text reference is missing.", this);
enabled = false;
}
}

public void Render(int score, int lives, string stateMessage)
{
scoreText.text = $"점수 {score:N0}";
livesText.text = $"목숨 {lives}";
stateText.text = stateMessage;
}
}

Inspector 연결 작업

GameHUD에 HUDPresenter를 추가하고 세 TMP_Text를 정확한 슬롯에 연결한 뒤 임시 Start에서 Render(100, 3, "플레이")를 호출해 확인합니다.

5. 코드가 동작하는 이유

Presenter는 게임 상태 값을 받아 UI 문자열로 변환합니다. 점수 증가 조건이나 게임 오버 판단을 전혀 모르므로 UI 디자인을 바꿔도 게임 규칙은 영향을 받지 않습니다.

6. 자주 하는 실수와 해결법

7. 직접 실습

8. 이해 점검 질문 3개

9. 핵심 요약

MINI QUIZ

UI 기초 미니 퀴즈

선택 즉시 정답과 해설을 확인할 수 있습니다. 결과는 이 브라우저에만 저장됩니다.

0 / 2
  1. 문제 1다음 중 “UI 기초”의 핵심 요약을 실제 상황에 맞게 적용한 것은 무엇인가요?
  2. 문제 2‘TMP 참조 미할당’ 상태에 관한 “UI 기초” 본문의 설명으로 가장 알맞은 것은 무엇인가요?
LESSON STATUS

학습을 마쳤나요?

직접 실습과 점검 질문까지 확인한 뒤 완료로 표시하세요.

14강. UI 기초 미완료 상태