유니티를 이용해 게임을 제작하다보면 String 변수를 객체명으로 활용해야 할 경우가 생깁니다.
예를들어 객체명이 btnidup이고 String 변수 name에 담긴 문자열 "idup"을 활용해서 btnidup객체를 불러와야 한다고 생각해봅시다.
직관적으로 생각해보면 name.interactable 처럼 객체를 사용하고 싶지만 이렇게 작성하면 String 변수의 속성밖에 활용할 수 없습니다.
그럼 String 변수의 값으로 btnidup 객체를 찾으려면 어떻게 해야할 까요?
바로 Dictionary 를 사용하는 방법이 있습니다.
Dictionary의 가장 큰 특성은 변수 Type을 두개 선언할 수 있다는 점입니다.
Key와 Value 로 나눌 수 있습니다.
딕셔너리변수명[Key] = Value;
그 이후에 딕셔너리변수명[해당키] 이렇게 작성하면 저장된 값을 바로 반환합니다.
예를 한번 들어보겠습니다.
코드 작성
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")마다 객체를 저장해서 사용하는 쪽이 좀 더 직관적이고 오류를 줄일 수 있다고 생각합니다.
감사합니다.