ConstructorHelpers 클래스 내에 존재하는 함수
모든건 생성자 내부에서 이루어져야됨. BeginPlay 절대 x
파라미터는 TEXT형이며 쌍따옴표 안에 해당 경로가 들어가야 한다. 항상 /Game 으로 시작
클래스 로딩 FClassFinder<>
// 클래스는 끝에 _C 접두어를 붙어줘야됨. 아래는 예시
auto BP_Actor = ConstructorHelpers::FClassFinder<AActor>(TEXT("/Game/Actors/TestActor.TestActor_C"));
또는 아래와 같이 가능
ConstructorHelpers::FClassFinder<AActor> BP_ACTOR(TEXT(""));
클래스는 TSubclassOf<클래스명> 타입임 즉 UClass, 항상 Succeed 함수로 널이 아닌지 체크
TSubclassOf<AActor> ActorClass;
if (BP_Actor.Succeed())
ActorClass=BP_Actor.Class;
저걸 이제 월드에 소환하면 된다 BeginPlay 함수
GetWorld()->SpawnActor(ActorClass, FTransform::Identity);
오브젝트 (메쉬, 텍스처 등) 로딩 FObjectFinder<>
auto Mesh = ConstructorHelpers::FObjectFinder<UStaticMesh>(TEXT("/Game/Meshes/SM_Pistol.SM_Pistol"));
또는 아래와 같이 가능
ConstructorHelpers::FObjectFinder<UStaticMesh> MESH(TEXT(""));
오브젝트는 자료형이 T* 형이다 즉 UStaticMesh로 설정시 UStaticMesh*다
UStaticMeshComponent형 클래스 포인터
if (Mesh.Succeed())
MeshComp->SetStaticMesh(Mesh.Object);
Object Class 둘 중 뭘 골라야하는지 헷갈린다면 마우스 대보고 Parent Class가 존재하는지 확인해본다, 없으면 무조건 오브젝트 타입이다.
또한 아래와 같이 경로 설정 가능
FString Path = "";
FString 타입을 넘길 시 * 연산자 오버로딩한걸 호출해서 TCHAR*형으로 보낸다.
예)
FString Path = "/Game/Meshes/SM_Pistol.SM_Pistol";
auto Mesh = ConstructorHelpers::FObjectFinder<UStaticMesh>(*Path);
'게임엔진 > Unreal' 카테고리의 다른 글
[Unreal] 오브젝트 테두리 선 메터리얼로 구현 (0) | 2023.03.26 |
---|---|
[Unreal] Construction Script (0) | 2022.12.15 |
[Unreal] 멀티플레이 개념잡기 Replicated (0) | 2022.11.27 |
[Unreal] 디버깅용 드로워 이용 방법 (Draw Debug) (0) | 2022.11.22 |
[Unreal] UI(위젯)에서 메인 캐릭터 가져오기 (0) | 2022.11.19 |