Untitled

헤더를 포함시키지 않고 런타임에 클래스 정보를 조회하기 위해서는 컨텐츠 브라우저에서 에셋의 레퍼런스 주소를 받아와야한다. 위 그림과 같이 컨텐츠 브라우저에서 Copy Reference를 통해 레퍼런스를 가져오면 /Script/CoreUObject.Class'/Script/ArenaBattle.ABPlayerController’ 이런식의 문자열을 받아오게 되는데 만약 받아온게 언리얼 C++ 클래스라면 ‘ ‘ 안에 있는 문자열만 필요하고

가져온게 블루프린트라면 ‘ ‘ 안에 있는 문자열과 추가로 _C를 추가해줘야 클래스정보를 읽을수 있다.


// 블루프린트 일때
static ConstructorHelpers::FClassFinder<APawn> ThirdPersonClassRef(TEXT("/Game/ThirdPerson/Blueprints/BP_ThirdPersonCharacter.BP_ThirdPersonCharacter_C")); // 블루프린트에서 클래스 정보를 가져오는거기 때문에 뒤에 _C를 입력해야함
if (ThirdPersonClassRef.Class)
{
	DefaultPawnClass = ThirdPersonClassRef.Class;
}

// 언리얼 C++ 클래스자체 일때
static ConstructorHelpers::FClassFinder<APlayerController> PlayerControllerClassRef(TEXT("/Script/ArenaBattle.ABPlayerController")); // 이거 자체가 언리얼 C++ 오브젝트 클래스라서 _C필요 없음.

if (PlayerControllerClassRef.Class)
{
	PlayerControllerClass = PlayerControllerClassRef.Class;
}

그런 다음 ConstructHelpers 네임스페이스 안에 있는 FClassFinder를 통해 클래스 정보를 받아올수 있다.

<aside> 💡 ConstructorHelpers를 static으로 선언하는 이유는 하나만 생성해서 사용하면되기 때문에 보통 static으로 선언해서 단하나만 존재하게 하여 사용한다.

</aside>