Enum은 상수의 집합을 나타내는 특별한 클래스다. 값을 상수(1, 2, 3, ...)로만 표현을 하는데 어려움이 잇다. 그래서 enum을 사용해 읽기 편하도록 도와주는 변수 타입이라고 생각하면 쉽다.
예를 들어 월요일에서 일요일을 0 ~ 6으로 표현을 하면 헷갈리기 쉽다. 그래서 0 대신에 monday라는 enum type을 사용한다.
public class Enum : MonoBehaviour
{
enum Week
{
Mon,
Tue,
Wed,
Thu,
Fri,
Sat,
Sun
};
// Start is called before the first frame update
void Start()
{
Week weekdays = Week.Mon;
Debug.Log(weekdays);
weekdays = Week.Sun;
Debug.Log(weekdays);
Debug.Log(++weekdays);
}
// Update is called once per frame
void Update()
{
}
}
위의 코드에서 Week라는 enum이라는 특별한 클래스를 만들고 Monday 부터 Sunday까지 담아 놓았다. 코드를 작성하고 커서를 Mon에 올리면 0이라고 알려준다.
Week weekdays = Week.Mon;
은 Week enum class 타입의 변수 weekdays에 초기값으로 Week enum 클래스의 Mon을 대입해 준거다. 콘솔 화면에 출력을 하면 Mon이라고 나온다.
다시 weekdays 변수에 Week enum class의 Sun을 대입하고 출력을 하면 Sun이 나온다.
마지막에 weekdays에 전휘연산자 ++를 붙여 출력을 하면 7이 출력이 된다.
코드를 바꿔 보았다.
public class Enum : MonoBehaviour
{
enum Week
{
Mon,
Tue,
Wed = 10,
Thu,
Fri,
Sat,
Sun
};
// Start is called before the first frame update
void Start()
{
Week weekdays = Week.Mon;
Debug.Log(weekdays);
weekdays = Week.Sun;
Debug.Log(weekdays);
Debug.Log(++weekdays);
}
// Update is called once per frame
void Update()
{
}
}
이상태로 출력을 하면 문제 없이 컴파일이 성공한다. 콘솔화면에 출력을 하면 마지막에 7이 15로 바뀐 것을 알 수 있다. enum은 1씩 증가하는 규칙이 있다. 그래서 중간에 값을 대입해주면 그 뒤에 오는 변수들에 효과를 준다.