본문 바로가기

프로그래밍/Unity 3D

[Unity3D] 유니티 문자열을 객체명으로, Dictionary 사용법

유니티를 이용해 게임을 제작하다보면 String 변수를 객체명으로 활용해야 할 경우가 생깁니다.

예를들어 객체명이 btnidup이고 String 변수 name에 담긴 문자열 "idup"을 활용해서 btnidup객체를 불러와야 한다고 생각해봅시다.

직관적으로 생각해보면 name.interactable 처럼 객체를 사용하고 싶지만 이렇게 작성하면 String 변수의 속성밖에 활용할 수 없습니다.


그럼 String 변수의 값으로 btnidup 객체를 찾으려면 어떻게 해야할 까요?

바로 Dictionary 를 사용하는 방법이 있습니다.

Dictionary의 가장 큰 특성은 변수 Type을 두개 선언할 수 있다는 점입니다.

Key와 Value 로 나눌 수 있습니다. 

딕셔너리변수명[Key] = Value;

위처럼 작성해서 Key값마다 값을 저장할 수 있고 Type은 변수 선언시에 지정합니다.

그 이후에 딕셔너리변수명[해당키] 이렇게 작성하면 저장된 값을 바로 반환합니다.


예를 한번 들어보겠습니다.

코드 작성

private Dictionary<string, GameObject> dict = new Dictionary<string, GameObject>; private string name = "idup"; void Start()

{

dict[name] = btnidup;

}

위처럼 작성하면 객체이제 객체를 string 변수로 불러올 수 있습니다.

dict["idup"] 으로 바로 객체의 속성을 사용할 수 있습니다. void Start() 부분에 작성하시고 불러오시면 되겠습니다.

객체를 GameObject[] 와 같이 배열로 선언할 수도 있지만 Dictionary에 객체를 키값(위에선 "idup")마다 객체를 저장해서 사용하는 쪽이 좀 더 직관적이고 오류를 줄일 수 있다고 생각합니다.


감사합니다.