標籤:
四大基類:UObject, AActor, UActorComponent, UStruct
UObject :最基本的構建基類
UObject + UClass 提供了最主要的服務:
屬性和方法的映射(Reflection of properties and methods)
屬性的序列化(Serialization of properties)
記憶體回收(Garbage collections)
根據name找到UObject(Finding UObjects by name)
可配置的屬性值(Configurable values for properties)
屬性和方法的網路支援(Networking support for properties and methods)
每個UObject的匯出類都會自動建立一個單獨的UClass,裡麵包含了關於執行個體的所有中繼資料(meta data)。UObject和UClass是一個遊戲對象(gameplay object)在它存留時間內做的任何事情的根源(UObject and UClass together are at the root of everything that a gameplay object does during its lifetime)。協助我們區別UClass和UObject之間的不同地方的途徑是,UClass是描述了一些東西,比如一個UObject執行個體長什麼樣子,什麼屬性是可以被序列化的,網路相關的東西等等。大多數遊戲開發工作都不會直接從UObject繼承,而是使用AActor或UActorComponent。為了寫遊戲代碼,開發人員不必知道UClass/UObject的工作細節,不過知道有這兩個東西存在還是有好處的。
AActor:
AActor的對象,是遊戲體驗中的一部分。AActor對象可以被關卡設計者放置到關卡中,或者在運行時通過遊戲系統建立。所有繼承於AActor的類的對象都可以放置在一個Level中,例如AStaticMeshActor,ACameraActor, APointLight .AActor從UObject派生,所以它可以享受前一節提到的所有服務。AActor可以通過遊戲代碼(c++/藍圖)顯式地回收,或者當它所屬的Level對象被移除時通過標準記憶體回收機制回收。AActor負責遊戲對象的進階行為。同時,AActor也是網路服務中可以被重用的對象的基類(AActors are also the base type that can be replicated during networking?)。在網路應答期間,AActor還可以為所有需要網路支援的AActor裡的UActorComponent對象分發資訊。
雖然AActor擁有自己的行為(特別是通過繼承得到的),但是它也可以作為UActorComponents層級的容器(特別是通過組合的)。這是通過AActor的RootComponent組件來完成的,它包含了一個UActorComponent,
當然,也可以包含很多個。在AActor對象被放置在Level裡面之前,AActor必須至少包含一個USceneComponent對象來保證AActor能進行平移,旋轉,縮放操作。
在AActor的生存周期裡,有一系列事件會被調用。下面的事件列表簡單地表明它的生存周期。
BeginPlay——當對象第一次進入遊戲實體時被調用
Tick——隨著時間的流逝,每幀被調用一次
EndPlay——當對象離開遊戲空間時被調用
運行時的生命週期:
Introduction to C++ Programming in UE4 閱讀筆記