AActor前面为什么要加A? UObject前面为什么要加U?

这其实是 Unreal Engine 的命名规范(Coding Standard),背后有很明确的设计逻辑。


🧩 一、前缀的含义

在 Unreal Engine 的类型系统中:

前缀 类型 说明
U UObject 派生类 所有继承自 UObject 的类都以 U 开头
A AActor 派生类 所有继承自 AActor 的类都以 A 开头
F 普通结构体(struct 不具备反射(Reflection)能力
E 枚举(enum 一般写成 EWeaponType 这样
I 接口(interface IInteractable
T 模板类(template TArray, TMap

🧠 二、为什么要区分 A / U

1. AActor 是一种特殊的 UObject
  • AActor 其实继承自 UObject → 所以所有 AActor 也都是 UObject

  • AActor放到关卡(World)里 ,能 被实例化为游戏世界中的对象,所以引擎需要区分它。

2. 命名区分可以帮助编译器和开发者快速识别类型

比如:

ACharacter* MyCharacter; // 明确知道是放在世界里的对象 UUserWidget* MyUI; // 明确知道是UI资源类,不会在世界中出现

这样一眼就能看出:

  • A = Actor(可放入关卡)

  • U = UObject(一般数据、资源、蓝图类)


🏗️ 三、类的层次关系

简单结构图如下:

  • 所有东西最终都来自 UObject

  • 但只有 AActor 及其子类能放进场景中(有 Transform、生命周期、Tick)


✅ 举例总结

类名 前缀 用途 可否放入关卡
ACharacter A 玩家角色类
AGameModeBase A 游戏模式控制类 ✅(仅服务器持有)
UUserWidget U UI 界面
UAnimInstance U 动画蓝图逻辑类

🔍 简短记忆法

"A 代表在场景里(Actor),U 代表在内存里(UObject)。"

相关推荐
zhangzhangkeji3 小时前
UE5 蓝图-游老师-3 基本数据类型-字符串-下:
ue5
帅_shuai_5 小时前
UE GAS 属性集
c++·游戏·ue5·虚幻引擎
5***o5004 天前
PHP在电商中的支付集成
sql·ue5·rizomuv
AA陈超5 天前
从0开始学习 **Lyra Starter Game** 项目
c++·笔记·学习·游戏·ue5·lyra
AA陈超10 天前
以 Lyra 的架构为基础,创建一个名为 “Aura“ 的英雄并实现发射火球技能
c++·笔记·学习·ue5·lyra
AA陈超10 天前
Lyra项目中的输入系统
c++·笔记·学习·游戏·ue5·lyra
AA陈超10 天前
ASC学习笔记0027:直接设置属性的基础值,而不会影响当前正在生效的任何修饰符(Modifiers)
c++·笔记·学习·ue5·虚幻引擎
开发游戏的老王10 天前
UE5.6 C++项目升级UE5.7时用Rider加载项目失败的解决办法
ue5·游戏引擎·虚幻·虚幻引擎·rider·ue5.7·target.cs
AA陈超11 天前
ASC学习笔记0020:用于定义角色或Actor的默认属性值
c++·笔记·学习·ue5·虚幻引擎
平行云11 天前
World Labs & Paraverse:统一3D世界的创造与访问
3d·unity·ai·ue5·aigc·实时云渲染·云xr