Menu
CoddyTech

게임 상태

Coddy Unity 여정의 실제 게임 만들기 섹션에 포함된 레슨. 56개 중 14번째.

게임은 한 번에 하나의 상태에 있습니다. 플레이어를 기다리는 중이거나, 실행 중이거나, 종료된 상태입니다. isPlaying과 isOver 같은 bool 변수 두 개는 실수로 둘 다 true가 될 수 있고, "Playng" 같은 문자열은 컴파일은 되지만 일치하는 경우가 없습니다. C#에는 고정된 선택지 목록을 위한 형식인 enum이 있습니다. 이 횡단보도 신호등은 enum을 사용합니다.

public enum Signal { Red, Yellow, Green }

public class Crossing : MonoBehaviour
{
    public Signal signal;

    void Update()
    {
        if (signal == Signal.Red && Input.GetMouseButtonDown(0))
        {
            signal = Signal.Green;
            Debug.Log("Walk!");
        }
    }

    public bool CanWalk()
    {
        return signal == Signal.Green;
    }
}

enum Signal { Red, Yellow, Green }은 정확히 세 가지 값을 가진 새 형식을 만듭니다. 이 값은 Signal.Red, Signal.Yellow, Signal.Green으로 작성합니다. Signal 필드는 한 번에 이 값 중 하나를 가집니다. ==로 값을 비교하고 =로 값을 변경합니다. 철자가 틀린 Signal.Gren은 컴파일 오류이므로 Play를 누르기 전에 실수를 알 수 있습니다.

enum은 클래스 바깥에 선언되므로 모든 스크립트에서 Signal을 사용할 수 있고, 보행자의 스크립트에서 crossing.CanWalk()를 호출할 수 있습니다. 새 enum 필드는 첫 번째 값으로 시작합니다. 여기서는 Red입니다. Inspector에서 public enum 필드는 값의 드롭다운 목록으로 표시됩니다. 내부적으로 각 값은 0부터 세는 숫자입니다. (int)Signal.Green은 2입니다.

challenge icon

챌린지

쉬움

용암에 닿지 않고 바닥을 건너세요. GameManager(싱글톤)와 Lava 스크립트는 준비되어 있습니다. 게임 상태를 추가하세요.

  • GameManager.cs에서 클래스 위에 Ready, Playing, GameOver 값을 순서대로 갖는 열거형 GameState를 선언하고, GameManager에 state라는 이름의 공개 GameState 필드를 추가하세요. 게임은 Ready 상태로 시작합니다.
  • 게임이 Ready 상태일 때 Space를 누르면 게임이 시작됩니다. 상태가 Playing이 되고 Go!가 로그에 기록됩니다.
  • Lava는 HitLava()를 호출합니다. 게임이 Playing 상태일 때 게임이 종료됩니다. 상태가 GameOver가 되고 Game over가 로그에 기록됩니다. Space를 눌러도 종료된 게임은 다시 시작되지 않습니다.
  • Player.cs에서 게임 상태가 Playing일 때만 방향키로 플레이어를 움직이세요.

Play를 누르고, Space를 누르기 전에 방향키를 사용해 보세요. 그런 다음 용암에 들어가고 Check를 누르세요.

직접 해보기

using UnityEngine;

// 여기에 GameState enum을 선언하세요: Ready, Playing, GameOver

public class GameManager : MonoBehaviour
{
    public static GameManager Instance;
    // 이름이 state인 public GameState 필드

    void Awake()
    {
        Instance = this;
    }

    void Update()
    {
        // Ready 상태에서 Space를 누르면 게임이 시작되고 Go!가 로그에 출력됩니다
    }

    public void HitLava()
    {
        // Playing 상태에서 게임이 종료되면 Game over를 로그에 출력합니다
    }
}
quiz icon실력 점검

이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.

실제 게임 만들기의 모든 레슨