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)。"

相关推荐
曼巴UE57 小时前
UE 属性同步
网络·c++·ue5
易知微EasyV数据可视化2 天前
UE5中添加 PNG/TIF 到 Cesium 地球表面方案
经验分享·ue5·数字孪生
GR902 天前
UE5 SetActorLocation背后发生了什么
ue5
成都渲染101云渲染66663 天前
云渲染怎么用?从项目准备到提交出图,3ds Max、VRay、UE5 实用教程
3d·ue5
directx3d_beginner6 天前
42,将移向指定位置改为c++
ue5
ue星空9 天前
UE5放了playstart显示badsize解决方案
ue5
directx3d_beginner11 天前
41,从UE5.1迁移到UE5.8排坑全记录
ue5
落魄大学生之流水线上谋生计14 天前
BLACK TIDE · 黑潮
ue5
曼巴UE522 天前
UE5 客户端 需要的网络同步概念总结(3 )-事件同步 RPC 以及三种调用方式
网络·c++·网络协议·学习·rpc·ue5
归真仙人25 天前
【UE项目迁移银河麒麟(Linux)局域网会话搜索失败排查】
ue5·ue4·vr·unreal engine·银河麒麟