반응형

데이터 컬렉션 을이용해 데이터를 담고 참조하곤합니다. 아래 예시와같이 말이죠.


 레벨

 언락종류

 언락슬롯

 6

21 

21 

36 

36 

51 

51 



위같이 레벨에 대해서 슬롯잠금 해제 할수 있는 잠금레벨 데이터 테이블이 있다고 하자.


 - 잠금 레벨 데이터 사용 예

ex) 6레벨에 아이템슬롯이 해제 되는경우, 2번쨰 슬롯이 잠금이 해제됨
ex) 6레벨에 스킬 슬롯이 해제 되는 경우, 2번쨰 슬롯이 잠금이 해제됨



 


자 위 예제 같이 기능이 구현 되기 위해 잠금레벨 데이터를 가지고 데이터들이 참조 되어야한다.

저 데이터들을 컬렉션(List, Dictionary,Queue,Stack 등) 에 담아서 참조하여 쓰면되는데 ,
제일 참조하기 쉬운 컬렉션이 Dictionary 일것이다.


그럼 위 테이블로 Dictionary 만들어 보자



우선 각테이블에 값을 담을 클래스를 만들자




언락종류가 잇으니 구별하기 쉽게 enum으로 정의해놓자





테이블 대로 클래스를 생성하여 데이터를 할당하자 

 => 예시 이므로 레벨 36 까지만 보여드리겟습니다 (일반적으로는 데이터를 엑셀로 만들어 cvs 로 뽑는다음 , json으로 읽어서 데이터를 불러 들여 데이터를 할당하곤 합니다. 여기서는 예제이니 하나하나 데이터 할당할게요) 









정의한 Dictionary 에 할당된 클래스들을 담으면 되겟죠 ?Dictionary<int, Info_UnlockTerm> Dic_unlock = new Dictionary<int, Info_UnlockTerm>(); 

하지만, 아래 그림 빨간부분과 같이 할당할 dictionary key값이 중복이된다는걸 꺠달을수 잇어요..


위테이블에 자세히 보면 레벨 부분이 21, 36, 51 이 두개씩이나 있네요 .

이렇게 되면 컬렉션에 담아지긴합니다만, 이전에 담앗던 key와 value는 사라지게 될거에요.

그래서 멀티키 사용하여 담도록합시다









아래그림과같이 Dictionary value 부분에 Dictionary를 넣는 부분인데,

보기엔 힘들어 보이지만, 별거 업어요 Dictionary 안에 Dictionary가 잇다고 생각하면됩니다.


이렇게 되면 같은 레벨에 다른 종류의 데이터를 넣을수 있게됩니다. 





아래와같이 사용 하면 됩니다.

Dictionary[레벨][언락종류] 이런식으로요


Info_unlockTerm unlock = Dictionary[레벨][언락종류] ; 이렇게 되겟죠 ?

보아하니 약간 2차배열을 쓰는거 같군요, Dictionary를 2차배열로 쓴다 생각해도 이해하기 괜찮을겁니다.









반응형

+ Recent posts