Ruya Games

3 - 블록 색상값을 enum으로 지정하기 본문

게임 개발 일지/블록 아케이드 게임

3 - 블록 색상값을 enum으로 지정하기

SadEvil 2023. 12. 1. 00:43

만드려는 게임의 기본 시스템은 이러합니다.

모든 블록들은 랜덤한 색상값을 갖고, 플레이어의 블록 아래에 플레이어와 같은 색상값을 가진 블록이 있다면 아래의 블록은 사라지고 플레이어의 블록은 밑으로 떨어집니다.

 

 

그렇다면 블록 오브젝트마다 색상값을 지정해줘야합니다.

int로 지정해줘도 되고, string으로 지정해줘도 되지만 enum(열거형)으로 설정하려고 합니다.

int에 비해 가독성도 좋고, string에 비해 오타가 발생할 일도 없으며, 인스펙터상에서 드롭다운으로 값을 지정해줄수 있습니다!

enum을 설정하는 방법은 아래와 같습니다.

public enum BlockColor { Blue, Red, Pink, Green, White }

enum 타입은 첫번째 값부터 0에 대응되고, 순서에 따라 1씩 증가하는 상수에 대응합니다.

(Blue는 0, Red는 1, Pink는 2 ,,, White는 4)

에디터 상에서 새 C# script를 생성해서 개별 스크립트 파일로 관리하는게 전 편한것 같습니다.

 

 

위와같이 enum 타입을 지정해주면 각 Block class들에서 아래와같이 시작 색상값을 지정해줄 수 있습니다.

public class Block : MonoBehaviour {
  public BlockColor blockColor;

  private void Start() {
    blockColor = (BlockColor)Random.Range(0, 5);
  }
}

enum타입은 상수 집합에 대응되기때문에, BlockColor로의 캐스트를 통해 정수값을 BlockColor 타입으로 변환할 수 있게 됩니다.

 

 

+ 다른 정수의 집합으로도 명시적으로 지정이 가능합니다. ( 참고 : MSDN - 열거형)

enum ErrorCode : ushort
{
    None = 0,
    Unknown = 1,
    ConnectionLost = 100,
    OutlierReading = 200
}