Unreal Cook Book:創(chuàng)建對象的的幾種姿勢(C++)
來源:程序員人生 發(fā)布時間:2016-06-14 09:43:23 閱讀次數(shù):6720次
DEMO源代碼
這個DEMO演示了在C++代碼中,創(chuàng)建UE4的常見類型的對象,包括Actor,ActorComponent,加載資源等。
源代碼請從這里下載:https://code.csdn.net/neil3d/unrealcookbook
使用的引擎版本為:4.11.2
打開項目后,啟動“CreateObjectDemo/CreateObjectDemoMap.umap”地圖文件便可運行。
創(chuàng)建組件
在UE4中,為Actor創(chuàng)建組件,可使用UObject::CreateDefaultSubobject()模板函數(shù),以下所示:
/* <CreateObjectDemo>
* 創(chuàng)建Component對象,要使用CreateDefaultSubobject模板函數(shù)
*/
MyComponent = CreateDefaultSubobject<UMyActorComponent>(TEXT("MyComponent"));
加載資源對象
在UE4中,項目中的所有資源文件,不要看作是文件,而要理解為“靜態(tài)對象”:也就是對象序列化的產(chǎn)物。加載項目資源可使用“UObject::StaticLoadObject()”函數(shù),其中重要的參數(shù)為對象的Name,而不是文件路徑。UE底層提供文件讀取功能,不管資源文件是存儲我獨立的.uasset文件,還是存儲到.PAK文件中,對上層都不需要關(guān)心。
/* <CreateObjectDemo>
* 加載模型、貼圖等對象,使用StaticLoadObject函數(shù)
*/
UStaticMesh* SM_Vase = Cast<UStaticMesh>(StaticLoadObject(UStaticMesh::StaticClass(),
NULL,
TEXT("/Game/Assets/StaticMeshes/SM_Vase"))
);
StaticMeshComponent = CreateDefaultSubobject<UStaticMeshComponent>(TEXT("StaticMeshComponent"));
StaticMeshComponent->SetStaticMesh(SM_Vase);
創(chuàng)建Actor對象
創(chuàng)建Actor對象,需要使用UWorld::SpawnActor()接口,以下所示:
/* <CreateObjectDemo>
* 創(chuàng)建AActor派生類對象不要用NewObject或new,而要用UWorld::SpawnActor()
*/
UWorld* World = GetWorld();
FVector pos(150, 0, 20);
AMyActor* MyActor = World->SpawnActor<AMyActor>(pos, FRotator::ZeroRotator);
創(chuàng)建UObject對象
如果你有UObject的派生類(非Actor、非ActorComponent),那你可使用NewObject()模板函數(shù)來創(chuàng)建其實例對象。
/* <CreateObjectDemo>
* 使用NewObject模板函數(shù),來創(chuàng)建UObject派生類對象
*/
MyObject = NewObject<UMyObject>();
生活不易,碼農(nóng)辛苦
如果您覺得本網(wǎng)站對您的學(xué)習(xí)有所幫助,可以手機掃描二維碼進行捐贈