본문 바로가기
::protected/언리얼4&5

ConstructorHelpers & StaticLoadObject

by 해맑은욱 2019. 11. 18.

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

 

[참고] https://wiki.unrealengine.com/Dynamic_Load_Object

'::protected > 언리얼4&5' 카테고리의 다른 글

액터(Actor)의 수명 주기.  (0) 2019.11.19
UE_LOG  (0) 2019.11.18
CreateDefaultObject & NewObject  (0) 2019.11.18
게임이 시작되기 까지의 과정  (0) 2019.11.12
컴포넌트(Component)  (0) 2019.11.12