게임 상태
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입니다.
챌린지
쉬움용암 횡단에 세 가지 상태를 추가하세요.
- GameManager 클래스 위에
public enum GameState { Ready, Playing, GameOver }를 선언하고, 클래스 안에public GameState state;를 선언하세요. Update()에서 Ready 상태일 때 Space를 누르면 Playing 상태로 바꾸고Go!를 로그에 출력하세요.HitLava()에서는 Playing 상태일 때 GameOver 상태로 바꾸고Game over를 로그에 출력하세요.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 플레이그라운드