본문 바로가기

프로그램/유니티 C# 강좌

[유니티 C# 강좌] 5. 열거형(Enumeration)

728x90
반응형

1. 열거형 형식

 

1.1 열거형 형식

 

열거형은 정수형 상수에 이름을 붙여서 소스에서 이해하기 쉽도록 해 줍니다

 

사용방법은 enum 키워드를 사용하여 정의합니다.

 

사용 방법

enum 열거형-이름 { 열거자1 = 초기값열거자2 ... }; // ① 열거형 데이터 형식 정의
...
열거형-이름 열거형-변수-이름 = 열거형-이름.열거자// ② 열거형 변수 선언
...
int 정수-변수-이름 = (int) 열거형-변수-이름; // ③ 활용

 

열거자1의 초기값은 생략 가능합니다. 초기값을 생략하면 0으로 할당됩니다.

 

코더제로 유니티 C# 강좌 열거자 초기값 생략 예
그림. 열거자 초기값 생략 예

 

앞의 초기값이 할당되고, 다음 값이 할당되지 않을 경우 앞의 값이 +1의 값이 할당됩니다.

그리고, 각 열거자 별로 초기값을 할당할 수 있지만, 앞에 할당된 값보다 커야 합니다.

 

코더제로 유니티 C# 강좌 열거자 초기값 할당 예
그림. 열거자 초기값 할당 예

 

열거형 요소의 기본적인 기본 형식은 int입니다.

byte와 같은 다른 정수 형식의 열거형을 선언하려면 콜론(:)을 사용한 뒤 byte를 사용하면 됩니다.

 

예제 : byte 열거형
enum Day : byte {Sat, Sun, Mon, Tue, Wed, Thu, Fri};

 

열거형 데이터 형식은 정수형 데이터 형식과 호환가능합니다.

이때 사용하는 것이 명시적 형변환(캐스트, Casts)입니다.

그냥 변수 이름 앞에 (열거형 이름)과 (int)를 넣어 주면 됩니다.

 

예제 : 열거형 형 변환

int 정수형-변수-이름 = (int) 열거형-변수-이름;
열거형-데이터-형식 열거형-변수-이름 = (열거형-데이터-형식)정수형-변수-이름;

 

 

1.2 ToString & Format 메서드

 

enum은 열거자들은 ToString과 Foramt 메서드를 사용하여 문자열로 변환이 가능합니다.

 

사용 방법
열거자.ToString();
...Format("... {인덱스}...", 열가자);

 

using UnityEngine; 

public class EnumExample : MonoBehaviour 
{ 
    enum Day { Sunday, Monday, Tuesday, Wednesday, Thursday, Friday, Saturday };  // ① 열거형 데이터 형식 정의 
    enum Month : byte { Jan = 1, Feb, Mar, Apr, May, Jun, Jul, Aug, Sep, Oct, Nov, Dec }; // ① 열거형 데이터 형식 정의 

    void Start() 
    { 
        Day today = Day.Monday; // ② 열거형 변수 선언 
        int dayNumber = (int)today; // ③ 활용 
        Debug.LogFormat("{0} is day number {1}.", today, dayNumber); 
        // 출력 : Monday is day number 1  

        Month thisMonth = Month.Dec; // ② 열거형 변수 선언 
        byte monthNumber = (byte)thisMonth; // ③ 활용 
        Debug.LogFormat("{0} is month number #{1}.", thisMonth, monthNumber); 
        // 출력 : Dec is month number 12  
    } 
}

 

 

2. 플래그(Flags) enum

 

enum의 각 열거자를 비트 값(예: 1, 2, 4, 8, ...)으로 구성하는 것입니다.

그리고, 열거자끼리 비트연산(AND, OR, NOT, XOR)를 사용하여 값의 조합을 할 수 있습니다.

OR 연산자를 이용해서 한 enum 변수에 다중값을 가질 수 있으며, 

AND 연산자를 이용하여 enum 변수가 특정 멤버를 포함하고 있는지 체크할 수 있다.

 

Flags enum을 사용하기 위해서 using syusing System; 선언하여야 합니다.

사용 방법은 enum 선언 위에 [Flags] 속성을 넣어 주면 됩니다.

 

사용 방법

using System;

[Flags]
enum 열거형-이름 { 열거자1 = 초기값열거자2 ... };

 

using UnityEngine; 
using System; 

public class FlagsEnueExample : MonoBehaviour 
{ 
    [Flags] 
    enum Days 
    { 
        Sunday = 0, 
        Monday = 1, 
        Tuesday = 2, 
        Wednesday = 4, 
        Thursday = 8, 
        Friday = 16, 
        Saturday = 32 
    } 

    void Start() 
    { 
        Days workingDay = Days.Monday | Days.Tuesday | Days.Wednesday | Days.Thursday | Days.Friday; 
        Debug.LogFormat($"Working Days are {workingDay}"); 
        // 출력  : Working Days are Monday, Tuesday, Wednesday, Thursday, Friday 
    } 
}

 

728x90
반응형