mobile wallpaper 1mobile wallpaper 2mobile wallpaper 3mobile wallpaper 4mobile wallpaper 5mobile wallpaper 6mobile wallpaper 7
1208 字
3 分钟
UE5的修饰词用法
2026-04-18
2026-04-19

📖 UE5 常用修饰词 (Specifiers) 完全指南#

在 UE5 中,修饰词主要跟在四个核心宏后面:UPROPERTY(变量)、UFUNCTION(函数)、UCLASS(类)、USTRUCT(结构体)。

一、 UPROPERTY 属性修饰词 (变量专用)#

这是你每天用得最多的修饰词,决定了变量在编辑器大纲蓝图图表里的生杀大权。

1. 权限控制:编辑与可见 (Edit vs Visible)#

提示Edit 代表能修改,Visible 代表只能看。Anywhere 代表所有地方,DefaultsOnly 代表只能在蓝图类里改,InstanceOnly 代表只能在关卡里的实体上改。

修饰词作用域核心应用场景
EditAnywhere蓝图类面板 + 关卡实例面板最自由。如 float BaseDamage,策划既能在蓝图改默认值,也能在关卡里给特定怪物调高伤害。
EditDefaultsOnly蓝图类面板最推荐的配置词。如引用的 UAnimMontage。不允许在关卡里单独改,必须统一在蓝图类里改。
EditInstanceOnly关卡实例面板AActor* PatrolTarget (巡逻目标点)。每个怪物在关卡里的路线都不同,在蓝图类里填无意义。
VisibleAnywhere蓝图类面板 + 关卡实例面板常用于组件指针。如 TObjectPtr<USphereComponent>。只能查看组件属性,不能替换组件本体。
VisibleDefaultsOnly蓝图类面板只能在蓝图类里看,不能改。平时极少用,通常用于 Debug 静态数据。
VisibleInstanceOnly关卡实例面板只能在关卡里看。适合做 Debug 面板,如在关卡里实时查看怪物的当前 ComboCount

2. 蓝图交互权 (Blueprint Read/Write)#

提示:如果不加这两个词,你的 C++ 变量对蓝图就是完全隐身的!

修饰词蓝图权限核心应用场景
BlueprintReadWrite可读,可写 (Get/Set)全权交出。如配置表里定义的 HitVFX,允许在蓝图里随时读取和替换。
BlueprintReadOnly只能读 (Get)保护状态。如私有维护的 CurrentHealth,允许 UI 读取画血条,但绝不允许 UI 直接修改血量!

3. 内存与序列化 (Memory & Serialization)#

修饰词核心作用核心应用场景
Transient不保存到硬盘运行时的临时缓存指针(如缓存的 UAnimInstance)、当前连击数。每次重启游戏都会清空。
SaveGame打上存档标记玩家的背包数据、等级、金币。告诉存档框架“这个要塞进存档文件里”。

4. 常用元数据 (Meta Specifiers)#

meta=(...) 包裹的高级语法。

  • meta = (AllowPrivateAccess = "true")极度常用! 将变量写在 private 里(如 Component 指针)又想暴露给蓝图面板时必加,否则编译器会报错。
  • meta = (BindWidget):做 UI (UMG) 时必用!在 C++ 里绑定蓝图里的 UI 控件(如 UProgressBar* HealthBar)。

二、 UFUNCTION 函数修饰词 (逻辑专用)#

控制 C++ 函数如何与蓝图节点交互。

1. 基础调用权#

修饰词蓝图表现核心应用场景
BlueprintCallable带执行销 (白线) 的节点最常规的函数。比如 DoAttackTrace()。必须连白线才会执行。
BlueprintPure没有执行销的纯节点只负责返回数据,不改变对象状态。比如 GetLockedTarget()IsDead()

2. C++ 与蓝图的究极混合#

提示:如何让 C++ 管纯数据计算,让蓝图管酷炫表现?就靠这两个词!

  • BlueprintImplementableEvent** (BIE)**
    • 含义:C++ 里只写声明,绝不写实现。具体的实现完全交给蓝图连线。
    • 用法:比如 void PlayHitEffect(FVector Location);。C++ 算出位置后直接调用,蓝图接收事件生成粒子。
  • BlueprintNativeEvent** (BNE)**
    • 含义:C++ 里有保底的默认实现,但蓝图可以**重写(Override)**它。
    • 用法:比如声明 void OnDeath(),必须在 C++ 写一个 void OnDeath_Implementation() 处理基本逻辑。蓝图如果重写它,默认会覆盖 C++ 的逻辑(除非手动调 Parent 节点)。

三、 UCLASSUSTRUCT 修饰词 (类结构专用)#

当你新建一个类或结构体时,写在最顶部的修饰词。

修饰词作用域核心应用场景
BlueprintTypeUCLASS / USTRUCT允许在蓝图里被当成变量类型来用。比如 FActionDefinition,不加这个词,蓝图里就搜不到它。
BlueprintableUCLASS 专用允许策划在这个 C++ 类的基础上,右键创建一个蓝图子类。通常加在核心玩法类上。
AbstractUCLASS 专用抽象类。表示这是个基类(如 UBaseWeapon),不能直接拖进场景,必须用子类(如 USword)。
meta=(BlueprintSpawnableComponent)UCLASS 专用极其重要! 如果写了自定义组件(ActorComponent),必须加这个词,否则在蓝图的 “Add Component” 列表里搜不到!
分享

如果这篇文章对你有帮助,欢迎分享给更多人!

UE5的修饰词用法
https://misuzu0010.github.io/posts/first_test/
作者
Misuzu0010
发布于
2026-04-18
许可协议
CC BY-NC-SA 4.0

部分信息可能已经过时

目录