天天看點

Unreal Engine 4 C++ 建立對象的幾種方法Unreal Engine4 C++ 建立對象的幾種方法

版權聲明:本文為燕良原創文章,轉載請注明出處:http://blog.csdn.net/neil3d

  • Unreal Engine4 C 建立對象的幾種方法
    • 建立Actor對象
    • 建立元件
    • 加載資源對象
    • 建立UObject對象

Unreal Engine4 C++ 建立對象的幾種方法

好記性不如爛筆頭啊,還是記錄一下!

1.建立Actor對象

建立Actor對象,需要使用UWorld::SpawnActor()接口,如下所示:

/* <CreateObjectDemo> 
* 建立AActor派生類對象不要用NewObject或者new,而要用UWorld::SpawnActor() 
*/  
UWorld* World = GetWorld();  
FVector pos(, , );  

AMyActor* MyActor = World->SpawnActor<AMyActor>(pos, FRotator::ZeroRotator);   
           

2.建立元件

在UE4中,為Actor建立元件,可以使用UObject::CreateDefaultSubobject()模闆函數,這個函數隻能在構造函數中調用。如下所示:

/* <CreateObjectDemo> 
* 建立Component對象,要使用CreateDefaultSubobject模闆函數 
*/  
MyComponent = CreateDefaultSubobject<UMyActorComponent>(TEXT("MyComponent"));  
           

注意:這裡有坑,TEXT(“MyComponent”)的名字不能重複!!

3.加載資源對象

在UE4中,項目中的所有資源檔案,不要看做是檔案,而要了解為“靜态對象”:也就是對象序列化的産物。附加元件目資源可以使用“UObject::StaticLoadObject()”函數,其中重要的參數為對象的Name,而不是檔案路徑。UE底層提供檔案讀取功能,無論資源檔案是存儲我獨立的.uasset檔案,還是存儲到.PAK檔案中,對于上層都不需要關心。

/* <CreateObjectDemo> 
* 加載模型、貼圖等對象,使用StaticLoadObject函數 
*/  
UStaticMesh* SM_Vase = Cast<UStaticMesh>(StaticLoadObject(UStaticMesh::StaticClass(),  
    NULL,  
    TEXT("/Game/Assets/StaticMeshes/SM_Vase"))  
    );  

StaticMeshComponent = CreateDefaultSubobject<UStaticMeshComponent>(TEXT("StaticMeshComponent"));  
StaticMeshComponent->SetStaticMesh(SM_Vase);
           

4.建立UObject對象

如果你有UObject的派生類(非Actor、非ActorComponent),那你可以使用NewObject()模闆函數來建立其執行個體對象。

/* <CreateObjectDemo> 
 * 使用NewObject模闆函數,來建立UObject派生類對象 
*/  
MyObject = NewObject<UMyObject>(); 
           

繼續閱讀