属性

关于为Gameplay类创建和实现属性的参考。

Windows
MacOS
Linux

属性声明

属性使用标准的C++变量语法声明,前面用UPROPERTY宏来定义属性元数据和变量说明符。

UPROPERTY([specifier, specifier, ...], [meta(key=value, key=value, ...)])
Type VariableName;

核心数据类型

整数

整数数据类型转换是“int”或“uint”后跟位大小。

变量类型

说明

uint8

8位无符号

uint16

16位无符号

uint32

32位无符号

uint64

64位无符号

int8

8位有符号

int16

16位有符号

int32

32位有符号

int64

64位有符号

作为位掩码

整数属性现在可以位掩码形式公开给编辑器。要将整数属性标记为位掩码,只需在meta分段中添加“bitmask”即可,如下所示:

UPROPERTY(EditAnywhere, Meta = (Bitmask))
int32 BasicBits;

添加此元标记将使整数作为下拉列表形式可供编辑,它们使用笼统命名标记(“Flag 1”、“Flag 2”、“Flag 3”等等),可以 单独打开或关闭。

GenericBitmask.png

为了自定义位标记名称,首先必须使用“bitflags”元标记来创建UENUM:

UENUM(Meta = (Bitflags))
enum class EColorBits
{
    ECB_Red,
    ECB_Green,
    ECB_Blue
};

创建该UENUM后,可以使用“BitmaskEnum”元标记来引用它,如:

UPROPERTY(EditAnywhere, Meta = (Bitmask, BitmaskEnum = "EColorBits"))
int32 ColorFlags;

完成这个更改后,下拉框中列出的位标记将使用列举类条目的名称和值。在上述示例中, ECB_Red 值为0,表示它被选中时将激活位0(将ColorFlags增加1)。ECB_Green对应于位1(将ColorFlags增加2),ECB_Blue 对应于位2(将ColorFlags增加4)。

CustomBitmask.png

虽然列举类型包含超过32个条目,但在属性编辑器UI中,位掩码关联中只会看到 前32个值。同样,虽然可接受显式值条目,但显式值介于0-31的条目不会包含在下拉列表中。

浮点类型

虚幻使用标准C++浮点类型、浮点和双精度。

布尔类型

布尔类型可以使用C++ ool关键字表示或表示为位域。

uint32 bIsHungry :1;
bool bIsThirsty;

字符串

虚幻引擎4支持三种核心类型的字符串。

  • FString是典型的“动态字符数组”字符串类型。

  • FName是对全局字符串表中不可变且不区分大小写的字符串的引用。相较于FString,它的大小更小,更能高效的传递,但更难以操控。

  • FText是指定用于处理本地化的更可靠的字符串表示。

对于大多数情况下,虚幻依靠TCHAR类型来表示字符。TEXT()宏可用于表示TCHAR文字。

MyDogPtr->DogName = FName(TEXT("Samson Aloysius"));

有关这三种字符串类型、何时使用哪个类型以及如何使用它们的更多信息,请参阅字符串处理文档

属性说明符

声明属性时,属性说明符 可被添加到声明,以控制属性与引擎和编辑器诸多方面的相处方式。

属性标签

效果

AdvancedDisplay

属性将被放置在其出现的任意面板的高级(下拉)部分中。

AssetRegistrySearchable

AssetRegistrySearchable 说明符说明此属性与其值将被自动添加到将此包含为成员变量的所有资源类实例的资源注册表。不可在结构体属性或参数上使用。

BlueprintAssignable

只能与组播委托共用。公开属性在蓝图中指定。

BlueprintAuthorityOnly

此属性必须为一个组播委托。在蓝图中,其只接受带 BlueprintAuthorityOnly 标签的事件。

BlueprintCallable

仅用于组播委托。应公开属性在蓝图代码中调用。

BlueprintGetter=GetterFunctionName

此属性指定一个自定义存取器函数。如此属性不带 BlueprintSetterBlueprintReadWrite 标签,则其为隐式 BlueprintReadOnly

BlueprintReadOnly

此属性可由蓝图读取,但不能被修改。此说明符与 BlueprintReadWrite 说明符不兼容。

BlueprintReadWrite

可从蓝图读取或写入此属性。此说明符与 BlueprintReadOnly 说明符不兼容。

BlueprintSetter=SetterFunctionName

此属性拥有一个自定义编译函数,被隐式标记为 BlueprintReadWrite。注意:必须对变异函数进行命名,并为相同类的一部分。

Category="TopCategory|SubCategory|..."

指定在蓝图编辑工具中显示时的属性类别。使用 | 运算符定义嵌套类目。

Config

此属性将被设为可配置。当前值可被存入与类相关的 .ini 文件中,创建后将被加载。无法在默认属性中给定一个值。暗示为 BlueprintReadOnly

DuplicateTransient

说明在任意类型的复制中(复制/粘贴、二进制复制等),属性的值应被重设为类默认值。

EditAnywhere

说明此属性可通过属性窗口在原型和实例上进行编辑。此说明符与所有“可见”说明符均不兼容。

EditDefaultsOnly

说明此属性可通过属性窗口进行编辑,但只能在原型上进行。此说明符与所有“可见”说明符均不兼容。

EditFixedSize

只适用于动态数组。这能防止用户通过虚幻编辑器属性窗口修改数组长度。

EditInline

允许用户在虚幻编辑器的属性查看器中编辑此属性所引用的Object的属性(只适用于Object引用,包括Object引用的数组)。

EditInstanceOnly

说明此属性可通过属性窗口进行编辑,但只能在实例上进行,不能在原型上进行。此说明符与所有“可见”说明符均不兼容。

Export

只适用于Object属性(或Object数组)。说明Object被复制时(例如复制/粘贴操作)指定到此属性的Object应整体导出为一个子Object块,而非只是输出Object引用本身。

GlobalConfig

工作原理与 Config 相似,不同点是无法在子类中进行覆盖。无法在默认属性中对其给定一个值。暗示为 BlueprintReadOnly

Instanced

仅限Object(UCLASS)属性。此类的一个实例创建时,其将被给定一个Object的特殊副本,指定到默认项中的此属性。用于实例化类默认属性中定义的子Object。暗示为 EditInlineExport

Interp

说明值可随时间由Matinee中的一个轨迹驱动。

Localized

此属性的值将拥有一个定义的本地化值。多用于字符串。暗示为 ReadOnly

Native

属性为本地:C++代码负责对其进行序列化并公开到垃圾回收

NoClear

阻止从编辑器将此Object引用设为空。隐藏编辑器中的清除(和浏览)按钮。

NoExport

只适用于本地类。此属性不应包含在自动生成的类声明中。

NonPIEDuplicateTransient

属性将在复制中被重设为默认值,除非其被复制用于PIE会话。

NonTransactional

说明对此属性值的修改不会包含在编辑器的撤销/重新执行历史中。

NotReplicated

跳过复制。这只会应用到服务请求函数中的结构体成员和参数。

Replicated

属性应随网络进行复制。

ReplicatedUsing=FunctionName

ReplicatedUsing 说明符指定一个回调函数,其在属性通过网络更新时执行。

RepRetry

只适用于结构体属性。如果此属性未能完全发送(举例而言:Object引用尚无法通过网络进行序列化),则重新尝试对其的复制。对简单引用而言,这是默认选择;但对结构体而言,这会产生带宽开销,并非优选项。因此在指定此标签之前其均为禁用状态。

SaveGame

此说明符可简便地将域显式包含,用于属性关卡中的检查点/保存系统。应在作为游戏存档一部分的所有域上设置此标签,并使用代理归档器对其进行读写。

SerializeText

本地属性应被序列化为文本(ImportTextExportText)。

SkipSerialization

此属性不会被序列化,但仍能导出为一个文本格式(例如用于复制/粘贴操作)。

SimpleDisplay

出现在 细节 面板中的可见或可编辑属性,无需打开“高级”部分即可见。

TextExportTransient

此属性将不会导出为一个文本格式(因此其无法用于复制/粘贴操作)。

Transient

属性为临时,意味着其无法被保存或加载。以此方法标记的属性将在加载时被零填充。

VisibleAnywhere

说明此属性在所有属性窗口中可见,但无法被编辑。此说明符与“Edit”说明符不兼容。

VisibleDefaultsOnly

说明此属性只在原型的属性窗口中可见,无法被编辑。此说明符与所有“Edit”说明符均不兼容。

VisibleInstanceOnly

说明此属性只在实例的属性窗口中可见(在原型属性窗口中不可见),无法被编辑。此说明符与所有“Edit”说明符均不兼容。

欢迎来到全新虚幻引擎4文档站!

我们正在努力开发新功能,包括反馈系统,以便您能对我们的工作作出评价。但它目前还未正式上线。如果您对此页面有任何意见与在使用中遭遇任何问题,请前往文档反馈论坛告知我们。

新系统上线运行后,我们会及时通知您的。

发表反馈意见