언리얼에서 TFieldIterator을 사용하여 리플렉션으로 속성과 함수들의 검색이 가능하다.
멤버 변수에는 UPROPERTY, 멤버 함수에는 UFUNCTION 매크로를 지정해주어야 가능하다.
TFieldIterator<UProperty>타입을 사용하면 속성을 가져올수 있다.
for (TFieldIterator<UProperty> It(ClassInfo1); It; ++It)
{
AB_LOG(Warning, TEXT("Field : %s, Type : %s"), *It->GetName(), *It->GetClass()->GetName());
UStrProperty* StrProp = FindField<UStrProperty>(ClassInfo1, *It->GetName());
if (StrProp)
{
AB_LOG(Warning, TEXT("Value = %s"), *StrProp->GetPropertyValue_InContainer(WebConnection));
}
}
TFieldIterator< UFunction >타입을 사용하면 함수을 가져올수 있다.
for ( TFieldIterator<UFunction> FunctionIterator( MyObjectsClass ); FunctionIterator; ++FunctionIterator )
{
UFunction* Func = *FunctionIterator;
UE_LOG( LogTemp, Log, TEXT( "%s" ), *FunctionIterator->GetName() );
}
함수의 경우 NativeFunctionLookupTable 배열을 사용해 현재 클래스에 어떤 함수가 있는지 알수 있다.
함수의 이름을 사용하여 FindFunctionByName함수를 사용해 가져올수 있다.
for (const auto& Entry : ClassInfo1->NativeFunctionLookupTable)
{
AB_LOG(Warning, TEXT("Function=%s"), *Entry.Name.ToString());
UFunction* Func1 = ClassInfo1->FindFunctionByName(Entry.Name);
if (Func1->ParmsSize == 0)
{
WebConnection->ProcessEvent(Func1, NULL);
}
}
'Unreal' 카테고리의 다른 글
언리얼 TArray, Delegate 소소한 팁 정리 (0) | 2024.12.11 |
---|---|
(브러시 모드) 펜툴을 이용한 지오메트리 생성시 충돌 주의점 (0) | 2024.12.10 |
언리얼 엔진에서 제공하는 싱글톤 클래스 종류 (0) | 2024.02.13 |
언리얼 CDO (Class Default Object) (0) | 2023.12.13 |
언리얼로 게임 개발 공부를 해보다.. (0) | 2021.07.23 |