当前位置: 首页 > news >正文

Unreal Engine UActorComponent

Unreal

  • 🛠️ Unreal Engine - UActorComponent
    • 🏷 定义
    • 🧩 类继承关系
    • ⚙️ 关键特性
    • 📝 使用方法
      • 1. 创建组件
      • 2. 生命周期回调
      • 3. 附加到 Actor
    • 📚 常见子类与用途
    • 📦 小结

🛠️ Unreal Engine - UActorComponent


🏷 定义

  • UActorComponentActor 的组件基类
  • 不能直接出现在世界中,而是附加到 AActor 上,为 Actor 提供功能和行为。
  • 用于实现 可复用逻辑或功能模块,如渲染、物理、音效、输入等。
  • 组合式设计的核心,允许 Actor 通过组件扩展功能而无需继承。

🧩 类继承关系

UObject└── UActorComponent├── UPrimitiveComponent│     ├── UStaticMeshComponent│     ├── USkeletalMeshComponent│     └── UAudioComponent├── UCameraComponent└── ULightComponent
  • UObject:基础对象类
  • UActorComponent:Actor 可附加组件基类
  • UPrimitiveComponent:带渲染和碰撞的组件基类
  • UStaticMeshComponent:静态网格渲染
  • USkeletalMeshComponent:骨骼网格渲染
  • UAudioComponent:声音播放组件
  • UCameraComponent:摄像机组件
  • ULightComponent:灯光组件

⚙️ 关键特性

  • 可附加到 Actor
    • Actor 可以有多个组件,每个组件负责特定功能
    • 通过 CreateDefaultSubobject<>() 或蓝图添加
  • 生命周期管理
    • 核心回调:
      • InitializeComponent():组件初始化
      • BeginPlay():Actor 开始游戏时调用
      • TickComponent(float DeltaTime, ELevelTick TickType, FActorComponentTickFunction* ThisTickFunction):每帧更新
      • EndPlay(const EEndPlayReason::Type EndPlayReason):结束时调用
  • 可复用与模块化
    • 一个组件可以被多个 Actor 重用
    • 支持自定义逻辑和状态
  • Tick 支持
    • 可设置 PrimaryComponentTick.bCanEverTick = true
    • 实现每帧逻辑,如 AI、移动、动画更新
  • 网络复制支持
    • 可通过 bReplicatesbReplicateMovement 在客户端/服务器同步状态
  • 属性可编辑与序列化
    • 使用 UPROPERTY() 暴露属性给蓝图或编辑器
    • 可序列化、保存游戏、支持 GC

📝 使用方法

1. 创建组件

// 头文件
UPROPERTY(VisibleAnywhere)
UStaticMeshComponent* MeshComponent;// CPP构造函数
MeshComponent = CreateDefaultSubobject<UStaticMeshComponent>(TEXT("MeshComponent"));
RootComponent = MeshComponent;

2. 生命周期回调

void UMyComponent::InitializeComponent()
{Super::InitializeComponent();UE_LOG(LogTemp, Warning, TEXT("Component initialized"));
}void UMyComponent::BeginPlay()
{Super::BeginPlay();UE_LOG(LogTemp, Warning, TEXT("Component BeginPlay"));
}void UMyComponent::TickComponent(float DeltaTime, ELevelTick TickType, FActorComponentTickFunction* ThisTickFunction)
{Super::TickComponent(DeltaTime, TickType, ThisTickFunction);// 每帧逻辑
}

3. 附加到 Actor

AMyActor::AMyActor()
{MyComponent = CreateDefaultSubobject<UMyComponent>(TEXT("MyComponent"));RootComponent = MyComponent;
}

📚 常见子类与用途

用途
UPrimitiveComponent带渲染和碰撞的组件基类
UStaticMeshComponent静态网格渲染和碰撞
USkeletalMeshComponent骨骼网格动画渲染
UAudioComponent播放声音和音效
UCameraComponent摄像机功能
ULightComponent灯光功能
USceneComponent提供位置、旋转、缩放变换支持的基础组件

📦 小结

  • UActorComponent = Actor 的功能模块化基类
  • ✅ 不能单独出现在世界中,需要附加到 Actor
  • ✅ 提供生命周期回调、Tick、网络同步
  • ✅ 可复用、可扩展、可序列化
  • ✅ 是实现组合式 Actor 架构的核心

http://www.dtcms.com/a/346217.html

相关文章:

  • 豆包 + 蘑兔,破解写歌难题!
  • 普中烧录软件 PZISP,打不开,提示“应用程序无法启动,因为应用程序并行配置不正确.....”
  • 深度学习设计模式:责任链(Chain of Responsibility)模式(例子+业务场景+八股)
  • RFID技术在铸管生产车间AGV小车的使用
  • SQL 复杂连接与嵌套查询的优化之道:从自连接、不等值连接到 CTE 的体系化实践
  • 「数据获取」《中国农村统计年鉴》1985-2024(获取方式看绑定的资源)
  • Python中各种数据类型的常用方法
  • 国产轻量级桌面GIS软件Snaplayers从入门到精通(20)
  • 自定义单线通信协议解析
  • Unreal Engine Simulate Physics
  • MySQL InnoDB记录存储结构深度解析
  • windows 帮我写一个nginx的配置,端口是9999,静态资源的路径是D:\upload
  • 企业架构之微服务应用架构
  • 深入理解底层通信协议和应用层协议的区别
  • Java Stream常见函数与应用案例
  • 大模型应用发展与Agent前沿技术趋势(下)
  • Debezium导致线上PostgreSQL数据库磁盘日志飙升处理方案
  • Unreal Engine ATriggerVolume
  • java 海报、图片合成
  • 蓝牙部分解析和代码建构
  • SSH如何访问只有没有公网IP的云服务器
  • loss 基本稳定,acc 一直抖动,如何优化?
  • assetbuddle hash 比对
  • 【计算机网络】 IPV4和IPV6区别
  • JSON学习和应用demo
  • 每日算法题【链表】:移除链表元素、反转链表
  • 嵌入式第三十五课!!Linux下的网络编程
  • 非标机械设备工厂,一般会遇到哪些问题
  • Linux服务器查看启动服务的5种方法
  • 基于RBAC的权限控制:从表设计到接口实现全指南