版權聲明:本文為燕良原創文章,轉載請注明出處: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>();