게임 프로젝트 기초집LESSON 11
게임 상태 흐름: 시작·플레이·일시정지·게임 오버 전환 만들기
난이도초급 프로젝트
예상 시간55분
선수지식10강 점수·목숨과 이벤트
11강. 게임 상태 흐름: 시작·플레이·일시정지·게임 오버 전환 만들기
1. 이번 강의에서 해결할 문제
게임 오버 뒤에도 택배가 생성되거나 일시정지 중 입력이 남을 수 있습니다. 허용된 상태 전환과 시스템 활성화를 명시적으로 관리합니다.
2. 학습 목표
3. 핵심 개념
게임 상태는 여러 bool 조합보다 enum 한 값으로 표현합니다. FlowController는 시스템의 켜짐 순서만 조정하고 점수 규칙이나 Panel 내용을 직접 계산하지 않습니다. Time.timeScale = 0만으로 모든 로직이 멈춘다고 가정하지 않고 입력과 생성도 명시적으로 막습니다.
4. 단계별 실습
C# · 파일 경로: Assets/_Project/Scripts/Core/GameFlowController.cs
GameFlowController.cs
using System;
using DeliverySorter.Gameplay;
using UnityEngine;
namespace DeliverySorter.Core
{
public sealed class GameFlowController : MonoBehaviour
{
[SerializeField] private GameSession session;
[SerializeField] private PackageSpawner spawner;
[SerializeField] private PackageInputController input;
public GameState State { get; private set; } = GameState.Start;
public event Action<GameState> StateChanged;
private void OnEnable() => session.RunEnded += GameOver;
private void OnDisable() => session.RunEnded -= GameOver;
public void StartRun()
{
Time.timeScale = 1f;
session.ResetRun();
input.SetInputEnabled(true);
spawner.Begin();
SetState(GameState.Playing);
}
public void TogglePause()
{
if (State == GameState.Playing) SetPaused(true);
else if (State == GameState.Paused) SetPaused(false);
}
private void SetPaused(bool paused)
{
Time.timeScale = paused ? 0f : 1f;
input.SetInputEnabled(!paused);
SetState(paused ? GameState.Paused : GameState.Playing);
}
private void GameOver()
{
input.SetInputEnabled(false);
spawner.Stop();
Time.timeScale = 1f;
SetState(GameState.GameOver);
}
private void SetState(GameState next)
{
State = next;
StateChanged?.Invoke(State);
}
}
}
Unity Editor·Inspector 작업: GameFlow GameObject에 스크립트를 붙이고 Session, Spawner, Input을 연결합니다. Start와 Pause UI Button의 OnClick에 각각 StartRun, TogglePause를 할당합니다.
테스트 작업: Start → Pause → Resume → GameOver 순서에서 생성·이동·입력과 Time Scale을 표로 확인합니다. Pause 중 unscaled 애니메이션은 별도 정책을 정합니다.
5. 코드가 동작하는 이유
상태 전환 메서드가 관련 시스템을 같은 순서로 갱신하고 마지막에 이벤트를 냅니다. UI는 StateChanged를 받아 화면만 바꾸고, 세션은 GameOver 화면의 존재를 모릅니다.
6. 자주 하는 실수와 해결법
7. 직접 실습
8. 이해 점검 질문 3개
9. 핵심 요약
MINI QUIZ
0 / 2게임 상태 흐름: 시작·플레이·일시정지·게임 오버 전환 만들기 미니 퀴즈
선택 즉시 정답과 해설을 확인할 수 있습니다. 결과는 이 브라우저에만 저장됩니다.
LESSON STATUS
11강. 게임 상태 흐름: 시작·플레이·일시정지·게임 오버 전환 만들기 미완료 상태학습을 마쳤나요?
직접 실습과 점검 질문까지 확인한 뒤 완료로 표시하세요.