使用结构体

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

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. 对于项目中更复杂的交互,你可能要创建 UObjectAActor 子类。

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

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

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

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

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

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

Select Skin
Light
Dark

Welcome to the new Unreal Engine 4 Documentation site!

We're working on lots of new features including a feedback system so you can tell us how we are doing. It's not quite ready for use in the wild yet, so head over to the Documentation Feedback forum to tell us about this page or call out any issues you are encountering in the meantime.

We'll be sure to let you know when the new system is up and running.

Post Feedback