📘Unreal Engine/📝Unreal Engine

[Unreal Engine] 에셋 경로 참조하기

주으기 2024. 3. 20. 09:44
728x90
반응형

에셋을 참조할 때 이거 하나 때문에 헤더를 가져와야 하나? 할 때가 있다.

에셋 경로를 참조하는 방법은 헤더를 참조하지 않고 에셋의 경로를 가져와서 참조하는 방법이다.

게임 모드에 Default Pawn Class, Player Controller Class 바꿔보기

 

가져오고자할 에셋(클래스) 경로 복사

 

가져오고자할 에셋(클래스) 경로 복사

 

ConstructorHelpers를 사용하면 템플릿에 경로를 참조할 수 있다.

ConstructorHelpers::FClassFinder<>를 사용하여 클래스의 타입을 넣고 위에서 복사한 경로를 집어넣으면 된다.

클래스가 아닌, 오브젝트 경로를 참조할 것이라면, FObjectFinder<> 사용.

클래스 정보를 가져올 때는 여기서 ''안에있는 경로만 남기고 삭제하면 된다.
/Script/Engine.Blueprint'/Game/ThirdPerson/Blueprints/BP_ThirdPersonCharacter.BP_ThirdPersonCharacter'

/Game/ThirdPerson/Blueprints/BP_ThirdPersonCharacter.BP_ThirdPersonCharacter 이렇게

복사할 때 C++ Class를 대상으로 복사한게 아니면 뒤에 _C를 붙인다.
/Game/ThirdPerson/Blueprints/BP_ThirdPersonCharacter.BP_ThirdPersonCharacter_C

 

#include "Game/ABGameMode.h"

AABGameMode::AABGameMode()
{
	// DefaultPawnClass 설정
	static ConstructorHelpers::FClassFinder<APawn> ThirdPersonClassRef(TEXT("/Game/ThirdPerson/Blueprints/BP_ThirdPersonCharacter.BP_ThirdPersonCharacter_C"));
	if (ThirdPersonClassRef.Class)
	{
		DefaultPawnClass = ThirdPersonClassRef.Class;
	}
	
	// PlayerControllerClass 설정
	static ConstructorHelpers::FClassFinder<APlayerController> PlayerControllerClassRef(TEXT("/Script/ArenaBattle.ABPlayerController"));
	if (PlayerControllerClassRef.Class)
	{
		PlayerControllerClass = PlayerControllerClassRef.Class;
	}
}

 

장점 : 에셋 경로를 참조하여 사용해서 가급적 다른 폴더의 헤더를 직접 참조하지 않도록 구성할 수 있다.

 

단점 : 에셋 경로를 하드코딩 하는 것 이기 때문에 경로나 이름이 변경되면 일일히 다 바꿔줘야 한다. 오류가 뿜뿜 남

 

 

 

 

 

728x90
반응형