본문으로 건너뛰기
게임 프로젝트 기초집LESSON 14

UI와 피드백: 콤보·경고·성공·실패를 읽기 쉽게 보여 주기

난이도초급 프로젝트
예상 시간55분
선수지식13강 랜덤 연속 제한

14강. UI와 피드백: 콤보·경고·성공·실패를 읽기 쉽게 보여 주기

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

규칙은 동작하지만 플레이어가 현재 점수, 남은 목숨과 상태를 즉시 알기 어렵습니다. UI가 매 프레임 상태를 조회하지 않고 이벤트에 반응하게 합니다.

2. 학습 목표

3. 핵심 개념

Presenter는 숫자를 계산하지 않고 이미 결정된 상태를 표시합니다. Update에서 Score를 계속 읽는 대신 변경 이벤트가 올 때만 텍스트를 갱신합니다. 피드백은 짧고 겹치지 않게 하며 저시력·색각 차이를 고려해 색상 외 문구와 아이콘을 함께 씁니다.

4. 단계별 실습

C# · 파일 경로: Assets/_Project/Scripts/UI/HudPresenter.cs

HudPresenter.cs
using DeliverySorter.Core;
using TMPro;
using UnityEngine;

namespace DeliverySorter.UI
{
public sealed class HudPresenter : MonoBehaviour
{
[SerializeField] private GameSession session;
[SerializeField] private GameFlowController flow;
[SerializeField] private TMP_Text scoreText;
[SerializeField] private TMP_Text livesText;
[SerializeField] private TMP_Text stateText;
[SerializeField] private GameObject startPanel;
[SerializeField] private GameObject pausePanel;
[SerializeField] private GameObject gameOverPanel;

private void OnEnable()
{
session.ScoreChanged += ShowScore;
session.LivesChanged += ShowLives;
flow.StateChanged += ShowState;
}

private void OnDisable()
{
session.ScoreChanged -= ShowScore;
session.LivesChanged -= ShowLives;
flow.StateChanged -= ShowState;
}

private void ShowScore(int value) => scoreText.text = $"점수 {value:N0}";
private void ShowLives(int value) => livesText.text = $"남은 목숨 {value}";

private void ShowState(GameState state)
{
stateText.text = state.ToString();
startPanel.SetActive(state == GameState.Start);
pausePanel.SetActive(state == GameState.Paused);
gameOverPanel.SetActive(state == GameState.GameOver);
}
}
}

Unity Editor·Inspector 작업: Canvas의 Presenter에 Session, Flow, TMP_Text 3개와 Panel 3개를 모두 연결합니다. Button의 선택 색상과 Focus 상태도 확인합니다.

테스트 작업: Inspector 필드 하나를 의도적으로 비워 null 오류를 재현한 뒤 올바르게 연결합니다. 각 상태에서 Panel이 동시에 두 개 켜지지 않는지 확인합니다.

5. 코드가 동작하는 이유

이벤트가 발생한 순간에만 관련 텍스트와 Panel이 바뀝니다. Presenter는 GameSession의 계산식과 PackageActor를 몰라 게임 규칙 변경이 UI 코드 변경으로 이어지지 않습니다.

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

7. 직접 실습

8. 이해 점검 질문 3개

9. 핵심 요약

MINI QUIZ

UI와 피드백: 콤보·경고·성공·실패를 읽기 쉽게 보여 주기 미니 퀴즈

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

0 / 2
  1. 문제 1“UI와 피드백: 콤보·경고·성공·실패를 읽기 쉽게 보여 주기” 실습 결과를 해석하는 올바른 기준은 무엇인가요?
  2. 문제 2“UI와 피드백: 콤보·경고·성공·실패를 읽기 쉽게 보여 주기” 실습 중 ‘UI가 Combo·Score를 계산’ 상황을 발견했습니다. 본문과 일치하는 설명은 무엇인가요?
LESSON STATUS

학습을 마쳤나요?

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

14강. UI와 피드백: 콤보·경고·성공·실패를 읽기 쉽게 보여 주기 미완료 상태