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>();
相關文章
- Unreal Cook Book:神奇的Spline MeshUnreal
- Unreal Cook Book:資料驅動Unreal
- Unreal Cook Book:動態改變材質的顏色等引數Unreal
- iOS 建立物件的姿勢iOS物件
- Unreal Cook Book:VR應用中的焦點目標拾取UnrealVR
- 用愚公移山說明Javascript建立物件的各種姿勢JavaScript物件
- 建立物件的幾種模式物件模式
- Windwos密碼匯出的幾種姿勢密碼
- Python 連線 MySQL 的幾種姿勢PythonMySql
- 建立 React 元件三種“姿勢”React元件
- js建立物件的幾種方式JS物件
- javascript建立物件的幾種方式JavaScript物件
- [php]建立物件的幾種形式PHP物件
- 論JVM爆炸的幾種姿勢及自救方法JVM
- js中建立物件的幾種方式JS物件
- JavaScript 建立類/物件的幾種方式JavaScript物件
- 淺談OC物件初始化的三種姿勢物件
- C++中有三種建立物件的方法C++物件
- JavaScript物件的建立方式有幾種?JavaScript物件
- js中建立物件的幾種常用方式JS物件
- [轉載]javascript建立物件的幾種方式JavaScript物件
- 實戰小技巧19:List轉Map List的幾種姿勢
- 在 .NET 中建立物件的幾種方式的對比物件
- SpringBoot系列Mybatis之引數傳遞的幾種姿勢Spring BootMyBatis
- 又拍雲張聰:OpenResty 動態流控的幾種姿勢REST
- SpringBoot系列之攔截器注入Bean的幾種姿勢Spring BootBean
- Guava Cache使用的三種姿勢Guava
- 程式設計師須知,Python匯入模組的幾種姿勢!程式設計師Python
- C++中建立物件的兩種方法及其區別C++物件
- 結合Spring傳送郵件的四種正確姿勢,你知道幾種?Spring
- PHP 檔案操作的各種姿勢PHP
- 解鎖跨域的九種姿勢跨域
- 程式碼除錯的N種姿勢除錯
- Python爬蟲的N種姿勢Python爬蟲
- 五種方法建立java物件,你知道幾種呢?Java物件
- Powershell惡意程式碼的N種姿勢
- 【吐血整理】Git的各種撤銷姿勢Git
- 跨頁面通訊的各種姿勢