일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- 데브런 #노코드게임제작 #데브런와디즈 #AI게임제작
- Unity
- 파이썬 웹 개발
- 연산자
- 튜플 단일 요소
- 인덱싱
- error
- 장고
- 스팀 도전과제 Reset
- 오프라인 환경
- 파이썬
- JavaScript
- 파이썬 패키지 설치
- 스팀 도과 Reset
- 모듈
- 슬라이싱
- sqlite3
- header
- #데브런 #노코드 #노코드게임제작 #데브런와디즈 #ai게임제작
- Python
- Achievement unity
- nodejs
- django
- 테이블 생성
- Steam Achievement Reset
- HTML
- 도과 테스트
- 회원가입
- 상속
- 도전과제 unity
- Today
- Total
개발성문
enum(열거 형식 : Enumerator)에 대하여 본문
Enumerator 열거 형식은 같은 범주에 속하는 여러개의 상수를 선언할 때 사용하는 방법입니다.
enum 이라는 것을 사용하죠.
enum의 특징은 키워드를 사용한다는 것입니다.
의미있는 단어를 사용하여 의미를 파악하는데 용이하고, 가독의 편의성이 높죠.
기본 형식은 아래와 같습니다.
enum 열거형식명 : 기본자료형식{ 상수1, 상수2, 상수3, 상수4, ...}
열거형에서 사용이 승인된 형식은 byte, sbyte, short, ushort, int, uint, long 또는 ulong 입니다.
기본자료형식은 생략을 해도 되는데, 그 경우 int 형 을 기본형식으로 하게 됩니다.
public enum SORT { HUMAN, PLANT, DEAMON, UNDEAD } void Start () { //1. Debug.Log(SORT.HUMAN); Debug.Log(SORT.PLANT); Debug.Log(SORT.DEAMON); Debug.Log(SORT.UNDEAD); //2. Debug.Log((int)SORT.HUMAN); Debug.Log((int)SORT.PLANT); Debug.Log((int)SORT.DEAMON); Debug.Log((int)SORT.UNDEAD); //3. Debug.Log((SORT.PLANT).GetType()); //4. Debug.Log(((int)SORT.PLANT).GetType()); }
위의 소스에서 SORT 라는 이름으로 열거형 안에 상수를 선언 했습니다.
이때 기본형식을 생략 했기때문에 자동으로 int 형이 되었고, 내부에 어떤 값도 할당 하지 않았는데요.
1번 처럼 값을 찍어 보면
SORT 내의 키워드만 나오게 되네요.
3번을 통해 타입을 확인해보면 위와 같습니다.
이와 같은 문제로 열거형에서는 명시적으로 형변환(cast) 해줘야 합니다.
2번과 같이 출력할 경우,
올바르게 원하는 값이 나오게 되었죠.
이것도 4번을 통해 타입을 확인해보면 형변환으로 인해 int형이 나오는 것을 확인 할 수 있죠.
여기서 봐야 하는건 어떤 값도 할당하지 않았는데, 첫번째 요소 값 0 부터 1씩 증가하여 정수형 값이 자동으로 할당 되었다는 것입니다.
이렇게 설계가 된 이유는 열거형 요소가 어떤 값을 갖는지 보다, 중복되지 않는 값을 갖느냐가 중요하기 때문이라고 합니다.
public enum SORT { HUMAN = 2, PLANT, DEAMON, UNDEAD }
또, 내부적으로 직접 값을 할당해주면,
할당해준 값으로 부터 1씩 증가한 것을 볼수 있습니다.
공부한 내용은 여기까지 이구요. 추가되는 내용은 업데이트 하도록 하겠습니다.
'공부 좀 하자 > Unity' 카테고리의 다른 글
Unity 스카이 박스(Sky Box) 에 대하여 (0) | 2018.03.30 |
---|---|
Unity 터레인 엔진(Terrain Engine) 사용 (0) | 2018.03.30 |
Unity Time.deltaTime 과 Time.smoothDeltaTime 에 대하여 (0) | 2018.03.29 |
MainCamera Projection 옵션 (0) | 2018.03.26 |
Unity Invoke 함수에 대하여 (0) | 2018.03.16 |