관리 메뉴

도드넷

C# enum 인덱스로 접근하기, enum 길이? (Feat. Enum 랜덤뽑기) 본문

창고/게임 개발 [Hidden]

C# enum 인덱스로 접근하기, enum 길이? (Feat. Enum 랜덤뽑기)

도드! 2020. 9. 3. 07:54




C# enum 인덱스로 접근하기 


그리고 C# enum 길이 구하는 방법.


(Feat. Enum 랜덤뽑기)



C# enum 구조체를 인덱스, 숫자로 접근하는 방법은 다음과 같다.


MyEnumType A1 = (MyEnumType)(숫자);


C# enum 구조체의 길이를 시스템상 구하려면 다음 방법을 사용하면 된다.


반대로 해당 타입을 정수로 반환하려면


(int)MyEnumType.T1


같이 (int) 커맨드를 앞에 붙이면 해당 enum값의 정수(순번)을 반환한다.


해당 enum타입의 갯수를 구하는 스크립티는 다음과 같다.


using System;


Enum.GetNames(typeof(MyEnumType)).Length);


이 둘을 조합해서 랜덤 enum 값을 반환하는 함수를 만들면 다음과 같다.


Enum 랜덤뽑기



AmmoType 이라는 enum이 있다고 하자.


{ 권총탄약, 소총탄약, 저격총탄약, 경기관총탄약 }


4개가 있다.


이중에서 랜덤한 타입하나를 뽑아서 


파라미터로 전달하는 기능을 구현하기 위해 함수를 만들게 되었다.


Enum.GetNames(typeof(MyEnumType)).Length);


을 사용하면 4 를 반환할것이다.


이걸통해서 랜덤수(0~4)를 뽑아서 목표하는 아모타입으로 변환하고 그 아모타입을 반환하면 된다.


(쓸대없이 복잡한 방식이긴한데 enum에 좀더 유연하게 접근하려고 공부해봄. 

사실 랜덤 탄약지급은 그냥 list에 주고싶은 탄약 넣어놓고 랜덤인덱스로 끄내면 깔끔함.)








반응형
Comments