해결된 질문
작성
·
148
0
안녕하세요
UI 자동화 #1 강의 부분을 듣다 이해가 안되는 부분이 있어 질문드립니다
1.
UI 자동화 #1 강의 10:03초 부분 33번째줄
_objects.Add(typeof(T), objects); 부분이 있는데
여기서 T는 Button 또는 Text 일텐데
Button, Text 그 자체가 타입일텐데 왜 10:03초 부분에서는 typeof(T)를 했는지 이해가 안됩니다
(타입의 타입??)
Button, Text는 타입이 아닌가요? 만약 Button, Text가 타입이 아니라면 Button과 Text의 타입이 뭔가요?
Component 인가요??
2.
UI 자동화 #1 강의 19:14초 부분을 보면
if (reculsive == false)
{
for(int i = 0; i < go.transform.childCount; i++)
{
Transform transform = go.transform.GetChild(i);
if(string.IsNullOrEmpty(name) || transform.name == name)
{
T component = transform.GetComponent<T>();
if (component != null)
return component;
}
}
}
else
{
foreach(T component in go.GetComponentsInChildren<T>())
{
if (string.IsNullOrEmpty(name) || component.name == name)
return component;
}
}
이렇게 코드를 작성하셨는데
이해가 안되는 부분이
reculsive == true 일때 component가 null인지 체크해서 component가 null이 아니라면
그 component를 리턴하도록 하였는데
reculsive == false 일때는 component가 null인지를 체크 안하셨는지 이해가 안됩니다
왜 reculsive == false 일때는 component가 null인지를 체크 안해도 되는지 그 이유가 궁금합니다
답변 2
1
1.
Dictionary<Button, UnityEngine.Object[]> 형식으로 만든다고 가정하면
Dictionary의 Key에 Button 객체가 들어간다는 의미이지,
그 자체로 딱히 [버튼 형식]이라는 의미는 아닙니다.
C#에서는 typeof을 이용해 [형식]을 추출할 수 있습니다.
2.
GetComponent<T>는 원하는 T타입의 Component가 없으면 null을 반환하니 체크가 필요합니다.
후자의 경우는 GetComponentsInChildren<T>을 foreach로 순환하기 때문에,
애당초 없는 경우는 알아서 걸러진 상태라 굳이 null체크를 하지 않았습니다.
0