AActor
🎮 Unreal Engine - AActor
🏷 定义
- AActor 是 继承自 UObject 的世界对象基类。
- 表示 游戏世界中可放置的对象,可拥有位置、旋转、缩放等变换信息。
- 支持组件组合,可通过 ActorComponent 添加功能(如渲染、碰撞、音效)。
- 是 场景中所有可交互对象(如玩家、NPC、道具、触发器)的核心类。
🧩 类继承关系
UObject
└── AActor
├── APawn
├── ACharacter
├── AVolume
└── ... 其他 Actor 派生类
- UObject:基础对象类
- AActor:世界中可放置对象
- APawn:可被玩家或 AI 控制的 Actor
- ACharacter:带有移动组件和碰撞的 Pawn
- AVolume:体积类 Actor,如触发区域
⚙️ 关键特性
- 变换信息(Transform)
- 拥有位置(Location)、旋转(Rotation)、缩放(Scale)
- 可通过蓝图或 C++ 控制对象移动、旋转
- 组件组合(Component System)
- Actor 可以附加多个 ActorComponent
- 常用组件:
UStaticMeshComponent:网格渲染USkeletalMeshComponent:骨骼网格UAudioComponent:声音播放UCameraComponent:摄像机
- 生命周期管理
- 核心回调:
BeginPlay():Actor 开始游戏或被生成时调用Tick(float DeltaTime):每帧更新EndPlay():Actor 被销毁或关卡结束时调用
- 支持动态生成、复制、销毁
- 碰撞与物理
- Actor 可拥有碰撞体(Collision Component)
- 支持事件绑定:
OnActorBeginOverlapOnActorEndOverlapOnActorHit
- 网络与复制(Replication)
- Actor 支持在客户端/服务器间同步
- 通过
bReplicates 和 ReplicateMovement 控制复制行为
📝 使用方法
1. 创建 Actor
1
2
3
4
5
| // 生成 Actor
FVector SpawnLocation(0.f, 0.f, 100.f);
FRotator SpawnRotation(0.f, 0.f, 0.f);
AMyActor* MyActor = GetWorld()->SpawnActor<AMyActor>(AMyActor::StaticClass(), SpawnLocation, SpawnRotation);
|
2. 生命周期回调
1
2
3
4
5
6
7
8
9
10
11
12
| // MyActor.cpp
void AMyActor::BeginPlay()
{
Super::BeginPlay();
UE_LOG(LogTemp, Warning, TEXT("Actor has begun play"));
}
void AMyActor::Tick(float DeltaTime)
{
Super::Tick(DeltaTime);
// 每帧逻辑
}
|
3. 组件绑定示例
1
2
3
4
5
6
7
| // 头文件
UPROPERTY(VisibleAnywhere)
UStaticMeshComponent* MeshComponent;
// CPP文件构造函数
MeshComponent = CreateDefaultSubobject<UStaticMeshComponent>(TEXT("MeshComponent"));
RootComponent = MeshComponent;
|
📚 常见子类与用途
| 类 | 用途 |
|---|
APawn | 可被玩家或 AI 控制的 Actor |
ACharacter | 带移动组件和碰撞的 Pawn,用于玩家角色 |
AVolume | 空间体积 Actor,用于触发逻辑或物理检测 |
ATriggerVolume | 继承自 AVolume,用于区域触发事件 |
ALight | 灯光 Actor |
ACameraActor | 摄像机 Actor |
📦 小结
- AActor = 世界中可放置的对象基类
- ✅ 拥有位置、旋转、缩放(Transform)
- ✅ 可组合多个组件扩展功能
- ✅ 支持生命周期回调、碰撞事件和网络复制
- ✅ 常用作玩家、NPC、道具、触发器等所有可交互对象的基类