Unreal Cook Book:建立物件的的幾種姿勢(C++)
DEMO原始碼
這個DEMO演示了在C++程式碼中,建立UE4的常見型別的物件,包括Actor,ActorComponent,載入資源等。
原始碼請從這裡下載:https://github.com/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>();
相關文章
- PTH的幾種食用姿勢
- npm換源的幾種姿勢NPM
- 用愚公移山說明Javascript建立物件的各種姿勢JavaScript物件
- 建立物件的幾種模式物件模式
- Windwos密碼匯出的幾種姿勢密碼
- 建立 React 元件三種“姿勢”React元件
- 論JVM爆炸的幾種姿勢及自救方法JVM
- C++中有三種建立物件的方法C++物件
- JavaScript物件的建立方式有幾種?JavaScript物件
- 淺談OC物件初始化的三種姿勢物件
- SpringBoot系列之攔截器注入Bean的幾種姿勢Spring BootBean
- SpringBoot系列Mybatis之引數傳遞的幾種姿勢Spring BootMyBatis
- 在 .NET 中建立物件的幾種方式的對比物件
- 實戰小技巧19:List轉Map List的幾種姿勢
- 又拍雲張聰:OpenResty 動態流控的幾種姿勢REST
- 結合Spring傳送郵件的四種正確姿勢,你知道幾種?Spring
- Python爬蟲的N種姿勢Python爬蟲
- Guava Cache使用的三種姿勢Guava
- 五種方法建立java物件,你知道幾種呢?Java物件
- 程式設計師須知,Python匯入模組的幾種姿勢!程式設計師Python
- 程式碼除錯的N種姿勢除錯
- PHP 檔案操作的各種姿勢PHP
- 解鎖跨域的九種姿勢跨域
- 論二級域名收集的各種姿勢
- 【吐血整理】Git的各種撤銷姿勢Git
- Powershell惡意程式碼的N種姿勢
- java建立物件的五種方式Java物件
- 建立Session物件的兩種方式Session物件
- JavaScript建立物件的多種方法JavaScript物件
- 在 JavaScript 中建立陣列的正確姿勢JavaScript陣列
- js判斷物件的幾種方法JS物件
- JS遍歷物件的幾種方法JS物件
- 在react中使用svg的各種騷姿勢ReactSVG
- 企業使用資料庫的12種姿勢資料庫
- Spring Boot 郵件傳送的 5 種姿勢!Spring Boot
- 入門快應用的另一種姿勢
- Java中建立物件的5種方式Java物件
- OC/Swift/C/C++混合使用的程式設計姿勢SwiftC++程式設計
- 開啟Flutter動畫的另一種姿勢——FlareFlutter動畫