Unreal
- 🎮 Unreal Engine - AActor
- 🏷 定义
- 🧩 类继承关系
- ⚙️ 关键特性
- 📝 使用方法
- 1. 创建 Actor
- 2. 生命周期回调
- 3. 组件绑定示例
- 📚 常见子类与用途
- 📦 小结
🎮 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)
- 支持事件绑定:
OnActorBeginOverlap
OnActorEndOverlap
OnActorHit
- 网络与复制(Replication)
- Actor 支持在客户端/服务器间同步
- 通过
bReplicates
和 ReplicateMovement
控制复制行为
📝 使用方法
1. 创建 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. 生命周期回调
void AMyActor::BeginPlay()
{Super::BeginPlay();UE_LOG(LogTemp, Warning, TEXT("Actor has begun play"));
}void AMyActor::Tick(float DeltaTime)
{Super::Tick(DeltaTime);
}
3. 组件绑定示例
UPROPERTY(VisibleAnywhere)
UStaticMeshComponent* MeshComponent;
MeshComponent = CreateDefaultSubobject<UStaticMeshComponent>(TEXT("MeshComponent"));
RootComponent = MeshComponent;
📚 常见子类与用途
类 | 用途 |
---|
APawn | 可被玩家或 AI 控制的 Actor |
ACharacter | 带移动组件和碰撞的 Pawn,用于玩家角色 |
AVolume | 空间体积 Actor,用于触发逻辑或物理检测 |
ATriggerVolume | 继承自 AVolume,用于区域触发事件 |
ALight | 灯光 Actor |
ACameraActor | 摄像机 Actor |
📦 小结
- AActor = 世界中可放置的对象基类
- ✅ 拥有位置、旋转、缩放(Transform)
- ✅ 可组合多个组件扩展功能
- ✅ 支持生命周期回调、碰撞事件和网络复制
- ✅ 常用作玩家、NPC、道具、触发器等所有可交互对象的基类