21.12.23 01:30 작성
·
335
1
type잘 이해안가서 찾아보는데도 잘 이해가 안가네요ㅠ
typeof()시 가는게 enum이라는 타입인지 enum객체의 type인지..? 모르겠어요
1. 디버그를 돌려봤을때 이렇게 나오는데, 이 type으로 넘어가는{UI_Buttons + Texts}을 type 형식으로 보고 이 형식이 넘어간다고 이해하는게 맞나요?
아니면 {System.enum}이 넘어가는건가요??
디버그 하는게 익숙지 않아서 잘 모르겠어요 ..ㅎ
2. 1번으로 이해했을때, typeof(Buttons)를 통해 {UI_Buttons + Texts} 라는 형식으로 Type객체가 전달됐고,
<Button>,<Text>라는 제네릭은 전달된 Type객체와의 직접적인 연관보다는
여기서 Object배열에 <Button>,<Text>이라는 타입을 생성해서 바인딩하라는 정보제공 용도??로 쓰였다고 보면 맞게 이해한 건가요??
+강의 정말 좋아요ㅎ
답변 2
5
2021. 12. 23. 01:44
typeof()시 가는게 enum이라는 타입인지 enum객체의 type인지..? 모르겠어요
C#은 기본적으로 Reflection을 지원하는 언어이기 때문에
typeof(무엇무엇)을 이용해 '무엇무엇'의 타입을 얻어올 수 있습니다.
(C++에서도 런타임에 RTTI를 이용한 타입 정보를 추출할 수 있는데 비슷합니다)
타입은 간단하게는 int같은 정수도 될 수 있고 Player같은 클래스도 될 수 있으며
enum (ex. Buttons)도 하나의 타입으로 인식할 수 있습니다.
타입을 얻어오면 X-Ray를 찍듯 그와 관련된 모든 정보를 추출할 수 있습니다.
여기선 enum을 쓰니 enum으로 예를 들자면,
enum Buttons
{
A,
B,
};
라는 열거형이 있을 때 Buttons의 타입을 얻어오면
이것이 [enum (열거형)이고 이름은 Buttons이고, A와 B로 구성이 되어 있음]을 알 수 있습니다.
(Enum.GetNames를 이용해 A, B라는 애들을 추출할 수 있음)
그리고 'enum 객체'라는 것은 존재하지 않고
enum도 int, bool과 같은 하나의 타입으로 보셔야 합니다.
2.
말씀대로 두 가지 정보를 건내주고 이를 이용해 조합을 하는데요.
- Generic으로 전달된 T
- typeof으로 넘어간 type
우선 typeof로 넘어간 type을 이용해 매핑하고 싶은 애들의 이름을 추출하고
동일한 이름의 GameObject 중에서
T로 전달된 유니티 Component를 지닌 애들을 찾아줍니다.
그런데 말로 하면 어렵고 그냥 사용 예제를 보시는게 수월합니다.
2
2021. 12. 23. 15:23
와 감사합니다. 저는 Buttons를 하나의 클래스처럼 착각했나봐요 그래서 Buttons 는 enum객체인건가? 라고생각했거든요. 근데 enum형에 이름이 Buttons인 타입이라고 명쾌하게 알려주셔서 의문이 해결됐어요!
감사합니다 ㅎㅎb!