UE类型关系图
<p><a href="https://www.bilibili.com/video/BV1AG4y1k7jX?p=1&vd_source=01ab995a7d91327b48ee510d15cc5dad" title="第一章 简介 01 简介_哔哩哔哩_bilibili">第一章 简介 01 简介_哔哩哔哩_bilibili</a></p>
<p><a href="https://www.bilibili.com/video/BV1nU4y1X7iQ?p=3">https://www.bilibili.com/video/BV1nU4y1X7iQ?p=3</a></p>
<p><a href="https://docs.qq.com/sheet/DY3ZFUXJJeUxxbHhE?tab=48ddhk">https://docs.qq.com/sheet/DY3ZFUXJJeUxxbHhE?tab=48ddhk</a></p>
<pre><code class="language-plantuml">@startuml
class UObject
class UPlayer
class ULocalPlayer
class UNetConnection
class UGameInstance
class UGameEngine
class UEngine
class UEditorEngine
UObject <|-- UPlayer
UPlayer <|-- ULocalPlayer
UPlayer <|-- UNetConnection
UGameInstance o-- ULocalPlayer
UObject <|-- UGameInstance
UEngine <|-- UGameEngine
UEngine <|-- UEditorEngine
UGameEngine o-- UGameInstance
UEditorEngine o-- UGameInstance
</code></pre>
<p><img src="https://www.showdoc.com.cn/server/api/attachment/visitFile?sign=5f2047e0225abf4f981304fe43428f3e&file=file.png" alt="" /></p>
<p><img src="https://www.showdoc.com.cn/server/api/attachment/visitFile?sign=174c0d8a4c6d7b6d9df325239b416aed&file=file.png" alt="" /></p>
<h3>AActor</h3>
<pre><code class="language-csharp">/**
* Actor is the base class for an Object that can be placed or spawned in a level.
* Actors may contain a collection of ActorComponents, which can be used to control how actors move, how they are rendered, etc.
* The other main function of an Actor is the replication of properties and function calls across the network during play.
*
*
* Actor initialization has multiple steps, here's the order of important virtual functions that get called:
* - UObject::PostLoad: For actors statically placed in a level, the normal UObject PostLoad gets called both in the editor and during gameplay.
* This is not called for newly spawned actors.
* - UActorComponent::OnComponentCreated: When an actor is spawned in the editor or during gameplay, this gets called for any native components.
* For blueprint-created components, this gets called during construction for that component.
* This is not called for components loaded from a level.
* - AActor::PreRegisterAllComponents: For statically placed actors and spawned actors that have native root components, this gets called now.
* For blueprint actors without a native root component, these registration functions get called later during construction.
* - UActorComponent::RegisterComponent: All components are registered in editor and at runtime, this creates their physical/visual representation.
* These calls may be distributed over multiple frames, but are always after PreRegisterAllComponents.
* This may also get called later on after an UnregisterComponent call removes it from the world.
* - AActor::PostRegisterAllComponents: Called for all actors both in the editor and in gameplay, this is the last function that is called in all cases.
* - AActor::PostActorCreated: When an actor is created in the editor or during gameplay, this gets called right before construction.
* This is not called for components loaded from a level.
* - AActor::UserConstructionScript: Called for blueprints that implement a construction script.
* - AActor::OnConstruction: Called at the end of ExecuteConstruction, which calls the blueprint construction script.
* This is called after all blueprint-created components are fully created and registered.
* This is only called during gameplay for spawned actors, and may get rerun in the editor when changing blueprints.
* - AActor::PreInitializeComponents: Called before InitializeComponent is called on the actor's components.
* This is only called during gameplay and in certain editor preview windows.
* - UActorComponent::Activate: This will be called only if the component has bAutoActivate set.
* It will also got called later on if a component is manually activated.
* - UActorComponent::InitializeComponent: This will be called only if the component has bWantsInitializeComponentSet.
* This only happens once per gameplay session.
* - AActor::PostInitializeComponents: Called after the actor's components have been initialized, only during gameplay and some editor previews.
* - AActor::BeginPlay: Called when the level starts ticking, only during actual gameplay.
* This normally happens right after PostInitializeComponents but can be delayed for networked or child actors.
*
* @see https://docs.unrealengine.com/Programming/UnrealArchitecture/Actors
* @see https://docs.unrealengine.com/Programming/UnrealArchitecture/Actors/ActorLifecycle
* @see UActorComponent
*/</code></pre>
<h3>AInfo</h3>
<pre><code class="language-csharp">/**
* Info is the base class of an Actor that isn't meant to have a physical representation in the world, used primarily
* for "manager" type classes that hold settings data about the world, but might need to be an Actor for replication purposes.
*/</code></pre>
<h3>UActorComponent</h3>
<pre><code class="language-csharp">/**
* ActorComponent is the base class for components that define reusable behavior that can be added to different types of Actors.
* ActorComponents that have a transform are known as SceneComponents and those that can be rendered are PrimitiveComponents.
*
* @see [ActorComponent](https://docs.unrealengine.com/latest/INT/Programming/UnrealArchitecture/Actors/Components/index.html#actorcomponents)
* @see USceneComponent
* @see UPrimitiveComponent
*/</code></pre>
<h3>UGameFrameworkComponent</h3>
<pre><code class="language-csharp">/**
* GameFrameworkComponent is a base class for actor components made for the basic game framework classes.
*/</code></pre>
<h3>UGameStateComponent</h3>
<pre><code class="language-csharp">/**
* GameStateComponent is an actor component made for AGameStateBase and receives GameState events.
*/
</code></pre>
<h3>AController</h3>
<pre><code class="language-csharp">/**
* Controllers are non-physical actors that can possess a Pawn to control
* its actions. PlayerControllers are used by human players to control pawns, while
* AIControllers implement the artificial intelligence for the pawns they control.
* Controllers take control of a pawn using their Possess() method, and relinquish
* control of the pawn by calling UnPossess().
*
* Controllers receive notifications for many of the events occurring for the Pawn they
* are controlling. This gives the controller the opportunity to implement the behavior
* in response to this event, intercepting the event and superseding the Pawn's default
* behavior.
*
* ControlRotation (accessed via GetControlRotation()), determines the viewing/aiming
* direction of the controlled Pawn and is affected by input such as from a mouse or gamepad.
*
* @see https://docs.unrealengine.com/latest/INT/Gameplay/Framework/Controller/
*/</code></pre>