Unreal Cook Book:創建對象的的幾種姿勢(C++)
來源:程序員人生 發布時間:2016-06-14 09:43:23 閱讀次數:6711次
DEMO源代碼
這個DEMO演示了在C++代碼中,創建UE4的常見類型的對象,包括Actor,ActorComponent,加載資源等。
源代碼請從這里下載:https://code.csdn.net/neil3d/unrealcookbook
使用的引擎版本為:4.11.2
打開項目后,啟動“CreateObjectDemo/CreateObjectDemoMap.umap”地圖文件便可運行。
創建組件
在UE4中,為Actor創建組件,可使用UObject::CreateDefaultSubobject()模板函數,以下所示:
/* <CreateObjectDemo>
* 創建Component對象,要使用CreateDefaultSubobject模板函數
*/
MyComponent = CreateDefaultSubobject<UMyActorComponent>(TEXT("MyComponent"));
加載資源對象
在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);
創建Actor對象
創建Actor對象,需要使用UWorld::SpawnActor()接口,以下所示:
/* <CreateObjectDemo>
* 創建AActor派生類對象不要用NewObject或new,而要用UWorld::SpawnActor()
*/
UWorld* World = GetWorld();
FVector pos(150, 0, 20);
AMyActor* MyActor = World->SpawnActor<AMyActor>(pos, FRotator::ZeroRotator);
創建UObject對象
如果你有UObject的派生類(非Actor、非ActorComponent),那你可使用NewObject()模板函數來創建其實例對象。
/* <CreateObjectDemo>
* 使用NewObject模板函數,來創建UObject派生類對象
*/
MyObject = NewObject<UMyObject>();
生活不易,碼農辛苦
如果您覺得本網站對您的學習有所幫助,可以手機掃描二維碼進行捐贈