본문 바로가기

Unity(C#)

Unity(C#) Dictionary

Dictionary

key,value를 이용하여 자료를 저장한다.

 

Dictionary를 이용하면 자료를 편하게 찾을수있다.

선언시 사용한 타입을 미리 정의하기 때문에 박싱언박싱이 이러나지않는다.

라는 장점이 존재한다.

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
public class DictionaryTest : MonoBehaviour
{
    Dictionary<stringint> name = new Dictionary<stringint>();
 
    void Start()
    {
        name.Add("슬깃"1);
        name.Add("철수"2);
        name.Add("영희"3);
 
        Debug.Log("슬깃 : " + name["슬깃"]);
        Debug.Log("철수 : " + name["철수"]);
        Debug.Log("영희 : " + name["영희"]);
    }
}

배열처럼 0,1,2로 값을 찾는게아닌 key값을 이용하여 찾을수있다.

 


아래예제는 Dictionary를 이용하여 게임에서 KeyMaster를만들어본 예제이다.

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
public enum PlayerKey
{
    Attack,
    Healing,
    UpperCut,
    Skill,
    Jump
}
 
public class PlayerKeyMaster : MonoBehaviour
{
    public Dictionary<PlayerKey, KeyCode> keyMaster;
    
 
    void Start()
    {
        keyMaster = new Dictionary<PlayerKey, KeyCode>
        {
            {PlayerKey.Attack, KeyCode.X},
            {PlayerKey.Healing, KeyCode.LeftShift},
            {PlayerKey.UpperCut, KeyCode.UpArrow},
            {PlayerKey.Skill, KeyCode.Z},
            {PlayerKey.Jump, KeyCode.C}
        };
    }
 
}

enum과 Dictionary를 이용하여 keyMater(PlayerKey.Attack);을 하면 KeyCode.X가 반환되게 만들었다.

이런식으로 게임에서 key값을 구현하게되면 나중에 공격을 x에서z로바꾸고싶을때 공격버튼을체크하는 모든곳에서

체크하지 않고 해당 Dictionary의 x를z로 바꾸어만 주면되는 편리함과 코드를볼때 어디가 공격을 체크하는곳인지를 이름으로만 확인할수있는 장점이 존재한다.