使用结构体

通过此入门指南了解结构体的用法

Choose your operating system:

Windows

macOS

Linux

本页面的内容

结构体(Structs) (或 UStructs)是可以帮助你整理和操作相关属性的数据结构。你可以使用结构体创建自定义变量类型,以便帮助整理项目。本指南将帮助你设置结构体,并就如何自定义结构体提供一些深度信息。

实现结构体

  1. 打开你要在其中定义结构体的 头文件(.h)。

  2. 定义你的 **C++结构体* 并在它前面添加 `USTRUCT` 宏,其中包括你的结构体所需的所有UStruct说明符。

  3. 将 GENERATED_BODY 宏添加到结构体的顶部。

  4. 现在,你可以使用 UPROPERTY 标记结构体的成员变量,以便使其对UE的反射系统和蓝图脚本可见。

    1. 请查阅UProperty说明符列表,以便了解属性在引擎和编辑器的运行情况。

示例

USTRUCT(BlueprintType)
struct FMyStruct
{
    GENERATED_BODY()

    //~ 蓝图图表可以访问以下成员变量:
    // 这是我们测试变量的提示文本。
    UPROPERTY(EditAnywhere, BlueprintReadWrite, Category="Test Variables")
    int32 MyIntegerMemberVariable;

    //~ 蓝图图表无法访问以下成员变量:
    int32 NativeOnlyMemberVariable;

    /**~
    * 蓝图图表无法访问此UObject指针,但是
    * 指针对UE4的反射、智能指针和垃圾回收系统
    * 可见。
    */
    UPROPERTY()
    UObject* SafeObjectPointer;
};

其他信息

以下是一些有用的提示和使用结构体时要记住的事情:

  1. Ustructs 可以使用UE的智能指针和垃圾回收系统防止 Uobjects 被垃圾回收删除。

  2. 结构体与 Uobjects 不同,原因在于此类结构体最适用于简单的数据类型。

    1. 对于项目中更复杂的交互,你可能要创建 UObject 或 AActor 子类。

  3. 不要考虑 对 UStructs 使用复制。

    1. 复制时可 考虑 UProperty 变量。

  4. UE能够为结构体自动创建Make和Break函数。

    1. 对于带有 BlueprintType 标签的任何 UStruct 都会显示Make函数。

    2. 如果UStruct中至少有一个 BlueprintReadOnly 或 BlueprintReadWrite 属性,则会显示Break。

    3. Break创建的纯节点会为每个标记为 BlueprintReadOnly 或 BlueprintReadWrite 的属性提供一个输出引脚。

标签
欢迎帮助改进虚幻引擎文档!请告诉我们该如何更好地为您服务。
填写问卷调查
取消