UPROPERTY 修饰符
UPROPERTY 修饰符,我们之前已经接触过,但当时大部都是使用 EditAnywhere 这个选项。在这篇文章中,我们讲解更多可选择的选项。
在代码清单 1 中,我们写了几个不同修饰符的变量进行演示查看。
- UPROPERTY(VisibleAnywhere, BlueprintReadWrite)
- int32 VisibleAnywhereInt = 12;
- UPROPERTY(EditAnywhere, BlueprintReadOnly)
- int32 EditAnywhereInt = 12;
- UPROPERTY(VisibleInstanceOnly)
- int32 VisibleInstanceOnlyInt = 12;
- UPROPERTY(VisibleDefaultsOnly)
- int32 VisibleDefaultsOnlyInt = 12;
- UPROPERTY(EditDefaultsOnly)
- int32 EditDefaultsOnlyInt = 12;
- UPROPERTY(EditInstanceOnly)
- int32 EditInstanceOnlyInt = 12;
我们先看属性修饰符,有如下选项。虽然选项比较多,但是分开来看很容易理解。Visible 打头的代表变量是可见的,但不可编辑;Edit 打头的代表变量是可编辑的。包含 Defaults 的,表示作用于蓝图内;包含 Instance 的,代表作用于实例。
属性修饰符 | 类默认值 | 实例对象 | 是否可编辑 |
---|---|---|---|
VisibleAnywhere | ✅ 可见 | ✅ 可见 | ❌ 不可编辑 |
EditAnywhere | ✅ 可见 | ✅ 可见 | ✅ 可编辑 |
VisibleDefaultsOnly | ✅ 可见 | ❌ 不可见 | ❌ 不可编辑 |
EditDefaultsOnly | ✅ 可见 | ❌ 不可见 | ✅ 可编辑 |
VisibleInstanceOnly | ❌ 不可见 | ✅ 可见 | ❌ 不可编辑 |
EditInstanceOnly | ❌ 不可见 | ✅ 可见 | ✅ 可编辑 |
Defaults 和 Instance 的概念我们第一次接触,有点类似类和实例的概念。举一个例子说明更加清楚,图 1 是蓝图界面,可以查看修改类默认值,对应 Defaults;图 2 是把蓝图拖拽到视口里生成的实例,可以在细节窗口查看修改变量,对应 Instance。
比如在图 1 中,我们只能看到包含 Defaults 的变量,而看不到包含 Instance 的变量;同样,在图 2 中,我们只能看到包含 Instance 的变量,而看不到包含 Defaults 的变量。


接着我们看蓝图可见性修饰符,我们之前接触过。它可以把 C++ 变量暴露在蓝图事件图表中。BlueprintReadOnly 表示在蓝图事件图表中只读;BlueprintReadWrite 表示在蓝图事件图表中可读可写。
Blueprint 修饰符 | 蓝图中可 Get | 蓝图中可 Set |
---|---|---|
BlueprintReadOnly | ✅ | ❌ |
BlueprintReadWrite | ✅ | ✅ |