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.
Member | Type | Offset | Share |
---|---|---|---|
Components | TArray<UActorComponent*> | 0x 60 | |
AllComponents | TArray<UActorComponent*> | 0x 70 | |
Location | FVector | 0x 80 | |
Rotation | FRotator | 0x 8c | |
DrawScale | float | 0x 98 | |
DrawScale3D | FVector | 0x 9c | |
PrePivot | FVector | 0x a8 | |
DetachFence
A fence to track when the primitive is detached from the scene in the rendering thread. |
FRenderCommandFence | 0x b4 | |
CustomTimeDilation
Allow each actor to run at a different time speed. |
float | 0x b8 | |
Physics | EPhysics | 0x bc | |
RemoteRole | ENetRole | 0x bd | |
Role | ENetRole | 0x be | |
CollisionType | ECollisionType | 0x bf | |
ReplicatedCollisionType | ECollisionType | 0x c0 | |
TickGroup | ETickingGroup | 0x c1 | |
Owner
Owner of this Actor, used primarily for replication (bNetUseOwnerRelevancy & bOnlyRelevantToOwner) and visibility (PrimitiveComponent bOwnerNoSee and bOnlyOwnerSee) |
AActor* | 0x c4 | |
Base | AActor* | 0x cc | |
Timers | TArray<FTimerData> | 0x d4 | |
bStatic : 1 | uint32_t | 0x e4 | |
bHidden : 1 | uint32_t | 0x e4 | |
bNoDelete : 1 | uint32_t | 0x e4 | |
bDeleteMe : 1 | uint32_t | 0x e4 | |
bTicked : 1 | uint32_t | 0x e4 | |
bOnlyOwnerSee : 1 | uint32_t | 0x e4 | |
bTickIsDisabled : 1 | uint32_t | 0x e4 | |
bServerTickIsDisabled : 1 | uint32_t | 0x e4 | |
bWorldGeometry : 1 | uint32_t | 0x e4 | |
bIgnoreRigidBodyPawns : 1 | uint32_t | 0x e4 | |
bOrientOnSlope : 1 | uint32_t | 0x e4 | |
bIgnoreEncroachers : 1 | uint32_t | 0x e4 | |
bPushedByEncroachers : 1 | uint32_t | 0x e4 | |
bDestroyedByInterpActor : 1 | uint32_t | 0x e4 | |
bRouteBeginPlayEvenIfStatic : 1 | uint32_t | 0x e4 | |
bIsMoving : 1 | uint32_t | 0x e4 | |
bAlwaysEncroachCheck : 1 | uint32_t | 0x e4 | |
bHasAlternateTargetLocation : 1 | uint32_t | 0x e4 | |
bCanStepUpOn : 1 | uint32_t | 0x e4 | |
bNetTemporary : 1 | uint32_t | 0x e4 | |
bOnlyRelevantToOwner : 1 | uint32_t | 0x e4 | |
bNetDirty : 1 | uint32_t | 0x e4 | |
bAlwaysRelevant : 1 | uint32_t | 0x e4 | |
bReplicateInstigator : 1 | uint32_t | 0x e4 | |
bReplicateMovement : 1 | uint32_t | 0x e4 | |
bSkipActorPropertyReplication : 1 | uint32_t | 0x e4 | |
bUpdateSimulatedPosition : 1 | uint32_t | 0x e4 | |
bTearOff : 1 | uint32_t | 0x e4 | |
bOnlyDirtyReplication : 1 | uint32_t | 0x e4 | |
bAlwaysInformOfTimelapse : 1 | uint32_t | 0x e4 | |
bNetTimelapse : 1 | uint32_t | 0x e4 | |
bNetTimelapseInit : 1 | uint32_t | 0x e4 | |
bNetTimelapsePost : 1 | uint32_t | 0x e8 | |
bAllowFluidSurfaceInteraction : 1 | uint32_t | 0x e8 | |
bDemoRecording : 1 | uint32_t | 0x e8 | |
bDemoOwner : 1 | uint32_t | 0x e8 | |
bForceDemoRelevant : 1 | uint32_t | 0x e8 | |
bNetInitialRotation : 1 | uint32_t | 0x e8 | |
bReplicateRigidBodyLocation : 1 | uint32_t | 0x e8 | |
bKillDuringLevelTransition : 1 | uint32_t | 0x e8 | |
bExchangedRoles : 1 | uint32_t | 0x e8 | |
bConsiderAllStaticMeshComponentsForStreaming : 1 | uint32_t | 0x e8 | |
bDebug : 1 | uint32_t | 0x e8 | |
bPostRenderIfNotVisible : 1 | uint32_t | 0x e8 | |
s_bThrottleNetRelevancy : 1 | uint32_t | 0x e8 | |
m_bHasThreadedWork : 1 | uint32_t | 0x e8 | |
bForceNetUpdate : 1 | uint32_t | 0x e8 | |
bPendingNetUpdate : 1 | uint32_t | 0x e8 | |
bHardAttach : 1 | uint32_t | 0x e8 | |
bIgnoreBaseRotation : 1 | uint32_t | 0x e8 | |
bShadowParented : 1 | uint32_t | 0x e8 | |
bSkipAttachedMoves : 1 | uint32_t | 0x e8 | |
bCanBeAdheredTo : 1 | uint32_t | 0x e8 | |
bCanBeFrictionedTo : 1 | uint32_t | 0x e8 | |
bHurtEntry : 1 | uint32_t | 0x e8 | |
bGameRelevant : 1 | uint32_t | 0x e8 | |
bMovable : 1 | uint32_t | 0x e8 | |
bDestroyInPainVolume : 1 | uint32_t | 0x e8 | |
bCanBeDamaged : 1 | uint32_t | 0x e8 | |
bShouldBaseAtStartup : 1 | uint32_t | 0x e8 | |
bPendingDelete : 1 | uint32_t | 0x e8 | |
bCanTeleport : 1 | uint32_t | 0x e8 | |
bAlwaysTick : 1 | uint32_t | 0x e8 | |
bBlocksNavigation : 1 | uint32_t | 0x e8 | |
BlockRigidBody : 1 | uint32_t | 0x ec | |
bCollideWhenPlacing : 1 | uint32_t | 0x ec | |
bCollideActors : 1 | uint32_t | 0x ec | |
bCollideWorld : 1 | uint32_t | 0x ec | |
bCollideComplex : 1 | uint32_t | 0x ec | |
bBlockActors : 1 | uint32_t | 0x ec | |
bProjTarget : 1 | uint32_t | 0x ec | |
bBlocksTeleport : 1 | uint32_t | 0x ec | |
bMoveIgnoresDestruction : 1 | uint32_t | 0x ec | |
bProjectileMoveSingleBlocking : 1 | uint32_t | 0x ec | |
bNoEncroachCheck : 1 | uint32_t | 0x ec | |
bCollideAsEncroacher : 1 | uint32_t | 0x ec | |
bPhysRigidBodyOutOfWorldCheck : 1 | uint32_t | 0x ec | |
bComponentOutsideWorld : 1 | uint32_t | 0x ec | |
bForceOctreeSNFilter : 1 | uint32_t | 0x ec | |
bForceOctreeMNFilter : 1 | uint32_t | 0x ec | |
bRigidBodyWasAwake : 1 | uint32_t | 0x ec | |
bCallRigidBodyWakeEvents : 1 | uint32_t | 0x ec | |
bWhitelistCollisionWarning : 1 | uint32_t | 0x ec | |
bBounce : 1 | uint32_t | 0x ec | |
bJustTeleported : 1 | uint32_t | 0x ec | |
bSupportNetIrrelevant : 1 | uint32_t | 0x ec | |
bClientSideOnly : 1 | uint32_t | 0x ec | |
bEnableMobileTouch : 1 | uint32_t | 0x ec | |
bNetInitial : 1 | uint32_t | 0x ec | |
bNetOwner : 1 | uint32_t | 0x ec | |
bNetRelevant : 1 | uint32_t | 0x ec | |
bNetAcked : 1 | uint32_t | 0x ec | |
bHiddenEd : 1 | uint32_t | 0x ec | |
bEditable : 1 | uint32_t | 0x ec | |
bHiddenEdGroup : 1 | uint32_t | 0x ec | |
bHiddenEdLayer : 1 | uint32_t | 0x ec | |
bHiddenEdCustom : 1 | uint32_t | 0x f0 | |
bHiddenEdTemporary : 1 | uint32_t | 0x f0 | |
bHiddenEdLevel : 1 | uint32_t | 0x f0 | |
bHiddenEdScene : 1 | uint32_t | 0x f0 | |
bEdShouldSnap : 1 | uint32_t | 0x f0 | |
bTempEditor : 1 | uint32_t | 0x f0 | |
bPathColliding : 1 | uint32_t | 0x f0 | |
bPathTemp : 1 | uint32_t | 0x f0 | |
bScriptInitialized : 1 | uint32_t | 0x f0 | |
bLockLocation : 1 | uint32_t | 0x f0 | |
bForceAllowKismetModification : 1 | uint32_t | 0x f0 | |
bReplicateBotRankId : 1 | uint32_t | 0x f0 | |
bNoTick : 1 | uint32_t | 0x f0 | |
bDebugEffectIsRelevant : 1 | uint32_t | 0x f0 | |
bUpdateHavokPos : 1 | uint32_t | 0x f0 | |
c_bJustStartedTimelapsePlayback : 1 | uint32_t | 0x f0 | |
c_bJustEndedTimelapsePlayback : 1 | uint32_t | 0x f0 | |
SkelMeshCompTickTag | int32_t | 0x f4 | |
NetTag
Internal - used by UNetDriver |
int32_t | 0x f8 | |
IndexInTickList | int32_t | 0x fc | |
LastSlowRelevancyCheckTime | float | 0x 100 | |
NetUpdateTime | float | 0x 104 | |
NetUpdateFrequency
How often (per second) this actor will be considered for replication, used to determine NetUpdateTime |
float | 0x 108 | |
NetPriority
Priority for this actor when checking for replication in a low bandwidth or saturated situation, higher priority means it is more likely to replicate |
float | 0x 10c | |
LastNetUpdateTime | float | 0x 110 | |
TimeSinceLastTick | float | 0x 114 | |
Instigator | APawn* | 0x 118 | |
WorldInfo | AWorldInfo* | 0x 120 | |
LifeSpan | float | 0x 128 | |
CreationTime
The time this actor was created, relative to World->GetTimeSeconds(). |
float | 0x 12c | |
LastRenderTime | float | 0x 130 | |
Tag | FName | 0x 134 | |
InitialState | FName | 0x 13c | |
Layer | FName | 0x 144 | |
Group | FName | 0x 14c | |
HiddenEditorViews
Bitflag to represent which views this actor is hidden in, via per-view layer visibility. |
FQWord | 0x 154 | |
Touching | TArray<AActor*> | 0x 15c | |
Children
Array of all Actors whose Owner is this actor, these are not necessarily spawned by UChildActorComponent |
TArray<AActor*> | 0x 16c | |
LatentFloat | float | 0x 17c | |
LatentSeqNode | UAnimNodeSequence* | 0x 180 | |
PhysicsVolume | APhysicsVolume* | 0x 188 | |
Velocity | FVector | 0x 190 | |
Acceleration | FVector | 0x 19c | |
AngularVelocity | FVector | 0x 1a8 | |
BaseSkelComponent | USkeletalMeshComponent* | 0x 1b4 | |
BaseBoneName | FName | 0x 1bc | |
Attached | TArray<AActor*> | 0x 1c4 | |
RelativeLocation | FVector | 0x 1d4 | |
RelativeRotation | FRotator | 0x 1e0 | |
CollisionComponent | UPrimitiveComponent* | 0x 1ec | |
OverlapTag | int32_t | 0x 1f4 | |
RotationRate | FRotator | 0x 1f8 | |
PendingTouch | AActor* | 0x 204 | |
DatabaseFieldName | FName | 0x 20c | |
MessageClass | ULocalMessage* | 0x 214 | |
BotRankId | int32_t | 0x 21c | |
SupportedEvents | TArray<USequenceEvent*> | 0x 220 | |
GeneratedEvents | TArray<USequenceEvent*> | 0x 230 | |
LatentActions | TArray<USeqAct_Latent*> | 0x 240 | |
LocationPackedKey | int32_t | 0x 250 | |
LocationPrev | FVector | 0x 254 |