UE_C++ —— Structs 📅 2026/8/5 20:44:19 目录一实现一个UStruct二Struct Specifiers三最佳做法与技巧结构体Struct是一种帮助组织和操作相关属性的数据结构在引擎中结构体会被引擎反射系统识别为UStruct但不属于UObject生态圈且不能在UClasses内部使用在相同的数据布局下UStruct比UObject能更快创建UStruct支持UProperty但它不由垃圾回收系统管理不能提供UFunction一实现一个UStruct要把一个结构体变成UStruct遵循以下步骤打开要定义结构体的header (.h)文件将USTRUCT宏放在结构体定义的上方将GENERATED_BODY()宏作为定义的第一行USTRUCT([Specifier, Specifier, ...]) struct FStructName { GENERATED_BODY() };注可以用UPROPERTY来标记结构体的相关变量使其在虚幻反射系统 Unreal Reflection System和蓝图脚本Blueprint Scripting中可见二Struct SpecifiersAtomic表示该结构体应始终被序列化为一个单元不会为该类创建自动生成的代码标头仅用于解析元数据BlueprintType将此结构体作为一种类型公开可用于蓝图中的变量NoExport将不会为该类创建自动生成的代码标头仅用于解析元数据三最佳做法与技巧UStruct可以使用引擎的智能指针smart pointer和垃圾回收系统以防止垃圾回收删除UObjects结构体最好用于简单数据类型对于更复杂的交互可使用UObject或AActor子类来代替UStructs不可以用于复制但UProperty变量可以用于复制引擎可自动为结构体创建Make和Break函数Make函数出现在任何带有BlueprintType标签的Ustruct中如在UStruct中至少有一个BlueprintReadOnly或BlueprintReadWrite属性Break函数就会出现Break函数创建的纯节点为每个标记为BlueprintReadOnly或BlueprintReadWrite的资产提供一个输出引脚