aactor

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)
    • 支持事件绑定:
      • OnActorBeginOverlap
      • OnActorEndOverlap
      • OnActorHit
  • 网络与复制(Replication)
    • Actor 支持在客户端/服务器间同步
    • 通过 bReplicatesReplicateMovement 控制复制行为

📝 使用方法

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、道具、触发器等所有可交互对象的基类