当前位置: 首页 > 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.xdnf.cn/news/1348399.html

相关文章:

  • base64认识实际使用
  • #Datawhale 组队学习#8月-工作流自动化n8n入门-2
  • LLM实践系列:利用LLM重构数据科学流程01
  • 简单聊聊多模态大语言模型MLLM
  • LeetCode100 -- Day4
  • RCE的CTF题目环境和做题复现第3集
  • RoboTwin--CVPR2025--港大--2025.4.17--开源
  • 大模型微调训练资源占用查询:Windows 10 查看 NVIDIA 显卡GPU状态教程(替代 Ubuntu 下 watch nvidia-smi)
  • Python精确小数计算完全指南:从基础到金融工程实践
  • 二、高可用架构(Nginx + Keepalived + MySQL 主从)
  • StarRocks启动失败——修复全流程
  • AI生成技术报告:GaussDB与openGauss的HTAP功能全面对比
  • 【COMSOL】Comsol学习案例时的心得记录分享(三)
  • 期货Level2五档订单簿0.25秒级高频分时及日频历史行情数据使用指南
  • 刷题日记0822
  • 实现自己的AI视频监控系统-第一章-视频拉流与解码4(重点)
  • uboot添加ping命令的响应处理
  • 音视频处理工作室:实时通信的媒体层设计
  • Paddle3D-PETRv1 精度测试与推理实践指南
  • 容器安全实践(一):概念篇 - 从“想当然”到“真相”
  • 车载诊断架构 --- EOL引起关于DTC检测开始条件的思考
  • Mongodb操作指南
  • 大麦盒子DM4036-精简固件包及教程
  • 2025.8.22周五 在职老D渗透日记day24:burp+mumu抓包 安卓7.0以上证书配置
  • 电脑端完全免费的动态壁纸和屏保软件(真正免费、无广告、无会员)
  • 二叉搜索树(BST)、AVL树、红黑树
  • 爬虫基础学习-链接协议分析,熟悉相关函数
  • 基于抗辐照性能的ASP4644S电源芯片特性分析与多领域应用验证
  • 笔记本怎么才能更快散热?
  • DataStream实现WordCount