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
的属性提供一个输出引脚。