• 카테고리

    질문 & 답변
  • 세부 분야

    게임 프로그래밍

  • 해결 여부

    미해결

Bind() 함수 관련 질문입니다

21.04.14 16:21 작성 조회수 156

0

1. 자동화 1까지의 강의 내용만으로 봤을때 Bind<T>(Type type) 함수를 완료하게되면 현재 enum값으로 만들어져 있던 Buttons.PointButton에 유니티안에 있는 PointButton 게임오브젝트를 연결 시키는 작업을 한건가요? Buttons.PointButton에 접근해서 유니티안의 PointButton을 수정할수 있도록 만든것이라고 이해하면될까요..?

2.  아래 바인드 코드에서 유니티엔진배열의 objects를 만들때 names의 길이만큼의 비어있는 배열을 만들어주고 

딕셔너리 형식의 _objects에 먼저 추가를 한 다음에 for문을 돌면서 objects[i]에 컴포넌트를 추가하였는데 _objects는 딕셔너리 형식인데 키가 없이도 objects[i]에 접근하여 바로 값을 수정할수 있는건가요..?

그리고 for문을 통하여 component를 찾는것과 _objects.Add를 하는것은 순서를 바꾸는게 저는 더 보기 편한것 같은데 상관없을까요?

Dictionary<Type, UnityEngine.Object[]> _objects = new Dictionary<Type, UnityEngine.Object[]>();

    void Bind<T>(Type type) where T : UnityEngine.Object

    {

        string[] names = Enum.GetNames(type);

        UnityEngine.Object[] objects = new UnityEngine.Object[names.Length];

        _objects.Add(typeof(T), objects);

        for (int i = 0; i < names.Length; i++)

        {

            objects[i] = Util.FindChild<T>(gameObject, names[i], true);

        }

    }

답변 1

답변을 작성해보세요.

0

1.
네 그렇습니다. enum으로 넣어준 값과 동일한 이름을 찾아서 매핑해준 것입니다.

2.
리스트는 참조형이기 때문에, dictionary에 넣어준 애와
동일한 데이터를 수정하게 됩니다.
_objects.add 순서는 뒤로 가도 무방합니다.