Choose your operating system:
Windows
macOS
Linux
结构体(Structs)
(或
UStructs
)是可以帮助你整理和操作相关属性的数据结构。你可以使用结构体创建自定义变量类型,以便帮助整理项目。本指南将帮助你设置结构体,并就如何自定义结构体提供一些深度信息。
实现结构体
-
打开你要在其中定义结构体的 头文件(.h) 。
-
定义你的 **C++结构体* 并在它前面添加 `USTRUCT` 宏,其中包括你的结构体所需的所有 UStruct说明符 。
-
将
GENERATED_BODY
宏添加到结构体的顶部。 -
现在,你可以使用
UPROPERTY
标记结构体的成员变量,以便使其对UE的反射系统和蓝图脚本可见。-
请查阅 UProperty说明符 列表,以便了解属性在引擎和编辑器的运行情况。
-
示例
USTRUCT(BlueprintType)
struct FMyStruct
{
GENERATED_BODY()
//~ 蓝图图表可以访问以下成员变量:
// 这是我们测试变量的提示文本。
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category="Test Variables")
int32 MyIntegerMemberVariable;
//~ 蓝图图表无法访问以下成员变量:
int32 NativeOnlyMemberVariable;
/**~
* 蓝图图表无法访问此UObject指针,但是
* 指针对UE4的反射、智能指针和垃圾回收系统
* 可见。
*/
UPROPERTY()
UObject* SafeObjectPointer;
};
其他信息
以下是一些有用的提示和使用结构体时要记住的事情:
-
Ustructs
可以使用UE的智能指针和垃圾回收系统防止Uobjects
被垃圾回收删除。 -
结构体与
Uobjects
不同,原因在于此类结构体最适用于简单的数据类型。-
对于项目中更复杂的交互,你可能要创建
UObject
或AActor
子类。
-
-
不要考虑 对
UStructs
使用复制。-
复制时可 考虑
UProperty
变量。
-
-
UE能够为结构体自动创建Make和Break函数。
-
对于带有
BlueprintType
标签的任何UStruct
都会显示Make函数。 -
如果UStruct中至少有一个
BlueprintReadOnly
或BlueprintReadWrite
属性,则会显示Break。 -
Break创建的纯节点会为每个标记为
BlueprintReadOnly
或BlueprintReadWrite
的属性提供一个输出引脚。
-