[유니티] 딕셔너리 (Dictionary)

2024. 11. 23. 23:47게임 엔진/유니티

딕셔너리?

C#에서 제공하는 제네릭 컬렉션 클래스 중 하나로, key 와 value를 한 쌍으로 데이터를 저장하기 위한 배열, 리스트와 같은 자료구조이다.

 

사용 이유?

데이터를 보관하고 찾을 때 key가 필요한 경우 주로 사용된다. (key:이름 , value:점수)

 

장점?

- 검색속도가 매우 매우 빠르다. 리스트나 배열의 경우 순서대로 찾아야 하지만, 딕셔너리의 경우 키를 통해 찾기 때문에 한번에 찾을 수 있다.

- 중복된 키를 허용 하지 않기 때문에, 그에 따른 오류를 미리 예방할 수 있다.

 

단점?

- 기본적으로 정렬이 되지 않는다는 단점이 있으나, 보통은 정렬을 요구하진 않는다.

 

사용법

using System.Collections.Generic;
using UnityEngine;

public class PlayerScores : MonoBehaviour
{
    private Dictionary<int, int> playerScores = new Dictionary<int, int>();

    void Start()
    {
        // 플레이어 ID와 점수 추가
        playerScores.Add(1, 100);
        playerScores.Add(2, 150);
        playerScores.Add(3, 200);

        // 점수 출력
        Debug.Log("플레이어 1의 점수: " + playerScores[1]);
        Debug.Log("플레이어 2의 점수: " + playerScores[2]);
        Debug.Log("플레이어 3의 점수: " + playerScores[3]);

        // 점수 수정
        playerScores[2] = 180;
        Debug.Log("플레이어 2의 수정된 점수: " + playerScores[2]);

        // 플레이어 3 점수 제거
        playerScores.Remove(3);
        Debug.Log("플레이어 3 제거 후 점수: " + (playerScores.ContainsKey(3) ? playerScores[3].ToString() : "없음"));
    }
}

 

실제로 유니티에서 개발 할때 많이 쓰이는 자료구조 이기에 꼭 알고 있는 것이 좋다.