Menu
CoddyTech

게임 상태

Coddy Unity 여정의 실제 게임 만들기 섹션에 포함된 레슨. 60개 중 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처럼 잘못 쓴 값은 컴파일 오류가 발생하므로, ‘플레이’를 누르기 전에 실수를 확인할 수 있습니다.

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

challenge icon

챌린지

쉬움

용암 횡단에 세 가지 상태를 추가하세요.

  1. GameManager 클래스 위에 public enum GameState { Ready, Playing, GameOver }를 선언하고, 클래스 안에 public GameState state;를 선언하세요.
  2. Update()에서 Ready 상태일 때 Space를 누르면 Playing 상태로 바꾸고 Go!를 로그에 출력하세요. HitLava()에서는 Playing 상태일 때 GameOver 상태로 바꾸고 Game over를 로그에 출력하세요.
  3. Player.cs에서 GameManager.Instance.state == GameState.Playing일 때만 방향키 입력을 읽으세요.

‘플레이’를 누르세요. 방향키 입력은 Space를 누를 때까지 기다립니다. 그런 다음 ‘확인’을 누르세요.

직접 해보기

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를 로그에 출력하세요
    }
}

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

직접 연습해 보세요: Unity 플레이그라운드