본문으로 건너뛰기
게임 프로젝트 기초집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와 피드백: 콤보·경고·성공·실패를 읽기 쉽게 보여 주기 미완료 상태