在上一篇我們討論了如何在editor上建立CameraActor,並在C++中找到該actor的instance。這篇將會反過來討論怎麼樣在C++上進行客制化,並將調整完的CameraActor加入到world中。首先我們先建立我們自己的C++類別並繼承自CameraActor:

記得要選Show All Classes,不然會找不到。
在建完我們的MainCameraActor之後,我們必須對裡面的CameraComponent進行設定。
AMainCameraActor::AMainCameraActor(const FObjectInitializer& ObjectInitializer) : Super(ObjectInitializer) { GetCameraComponent()→ProjectionMode = ECameraProjectionMode::Orthographic; GetCameraComponent()→OrthoWidth = 2048.0f;
}
跟上一篇不同的是,這裡我們將ProjectionMode調整成Orthographic,並將寬度設為2048。調完之後,我們就可以直接把C++ class拉進我們的editor中,並命名為MainCamera:

從上圖中可以看到在我們的MainCamera的instance底下有一個CameraComponent。上面程式碼中的GetCameraComponent()取到的就是這個物件。在引擎中通常會把Actor中可以隨時抽換組合的功能寫成一個Component,可以很方便我們進行功能的復用及重組。在我們的CameraActor中,預設有一個CameraComponent,主要用來描述我們CameraActor的viewpoint以及各種cmera相關的設定,例:projection type、field of view……。Actor本身並不會有transform相關資訊( location、rotation,、scale),這些資訊是保存在RootComponent中。以下是ACameraActor的建構子內容:
ACameraActor::ACameraActor(const FObjectInitializer& ObjectInitializer)
: Super(ObjectInitializer)
{
// Setup camera defaults
CameraComponent = CreateDefaultSubobject
從上面的code我們可以看到引擎預設建立了一個CameraComponent,並將這個Component設為RootComponent。另外後面有幾個xxxx_DEPRECATED的參數,其實也都是移進到Component中了。