🎮 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

// 生成 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. 生命周期回调

// 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. 组件绑定示例

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

Logo

惟楚有才,于斯为盛。欢迎来到长沙!!! 茶颜悦色、臭豆腐、CSDN和你一个都不能少~

更多推荐