언리얼에서는 런타임에 특정 클래스나 구조체의 필드에 존재하는 멤버변수의 변수명을 얻어올수 있는 방법이 존재한다 ( 언리얼 리플렉션 시스템에서 제공하는 것이다! )

TFieldIterator 라는 반복자를 통해서 얻어올수 있다. 다만 해당하는 클래스나 구조체가 언리얼 오브젝트형식이어야 한다.

(UCLASS나 USTRUCT와 같은 매크로가 클래스나 구조체이름위에 존재해야한다)

아래는 FABCharacterStat이라는 구조체의 멤버변수 명을 읽어오는 예시 코드이다.

for (TFieldIterator<FNumericProperty> PropIt(FABCharacterStat::StaticStruct()); PropIt; ++PropIt)
	{
		const FName PropKey(PropIt->GetName());
		const FName TextBaseControlName = *FString::Printf(TEXT("Txt%sBase"), *PropIt->GetName());
		const FName TextModifierControlName = *FString::Printf(TEXT("Txt%sModifier"), *PropIt->GetName());
	}

아래는 TFieldIterator를 통해 같은 자료형을 가진 (여기서는 FABCharacterStat 구조체) 포인터가 주어졌을때 (BaseStat, ModifierStat) 해당 포인터에서 특정 값을 조회하여 존재한다면 값을 얻어오는 코드이다.

for (TFieldIterator<FNumericProperty> PropIt(FABCharacterStat::StaticStruct()); PropIt; ++PropIt)
{
	const FName PropKey(PropIt->GetName());

	float BaseData = 0.0f;
	PropIt->GetValue_InContainer((const void*)&BaseStat, &BaseData);
	float ModifierData = 0.0f;
	PropIt->GetValue_InContainer((const void*)&ModifierStat, &ModifierData);
}