::protected/언리얼4&5
ConstructorHelpers & StaticLoadObject
해맑은욱
2019. 11. 18. 19:22
ConstructorHelpers
;생성자에서 에셋 로드 시 사용.
// 애셋에 대한 포인터를 가져옴.
static ConstructorHelpers::FObjectFinder<UStaticMesh> MyMesh(TEXT("/Game/../StaticMesh/MESH.MESH");
if (MyMesh.Succeeded())
{
Object->SetStaticMesh(MyMesh.Object);
}
|
cs |
StaticLoadObject
;런타임에서 에셋 로드 시 사용.
// StaticLoadObject.
void MyClass::SetContentMesh(const TCHAR* ContentPath)
{
USkeletalMesh* NewMesh= Cast<USkeletalMesh>(StaticLoadObject(USkeletalMesh::StaticClass(), NULL, ContentPath));
if(NewMesh)
{
SetSkeletalMesh(NewMesh);
}
}
// 템플릿화.
template <typename ObjClass>
static FORCEINLINE ObjClass* LoadObjFromPath(const FName& Path)
{
if(Path == NAME_None) return NULL;
//~
return Cast<ObjClass>(StaticLoadObject(ObjClass::StaticClass(), NULL,*Path.ToString()));
}
// Load PS From Path
static FORCEINLINE UParticleSystem* LoadPSFromPath(const FName& Path)
{
if(Path == NAME_None) return NULL;
//~
return LoadObjFromPath<UParticleSystem>(Path);
}
// Load Material From Path
static FORCEINLINE UMaterialInterface* LoadMatFromPath(const FName& Path)
{
if(Path == NAME_None) return NULL;
//~
return LoadObjFromPath<UMaterialInterface>(Path);
}
// Load Static Mesh From Path
static FORCEINLINE UStaticMesh* LoadMeshFromPath(const FName& Path)
{
if(Path == NAME_None) return NULL;
//~
return LoadObjFromPath<UStaticMesh>(Path);
}
|
cs |