Unreal Engine中<Gameplay Class>.h与<Gameplay Class>.generated.h的区别是什么?
Unreal Engine中.h与.generated.h的区别
1. 编写主体与可控性
<Gameplay Class>.h:由开发者手动编写的核心头文件,完全可控。你在这里定义类的基础结构(比如继承关系)、声明成员变量/函数,以及添加Unreal特有的宏标记(UCLASS()、UPROPERTY()、UFUNCTION()等)。<Gameplay Class>.generated.h:由Unreal的Unreal Header Tool (UHT) 自动生成的文件,禁止手动修改。每次你修改主头文件中的反射相关宏(比如新增UPROPERTY),UHT都会重新生成该文件,覆盖原有内容。
2. 核心用途差异
- 主头文件:是业务逻辑的入口,负责定义类的对外接口和核心框架,所有开发者自定义的逻辑声明都放在这里。
- 生成头文件:承载Unreal反射系统所需的元数据与辅助代码,包括:
- 属性/函数的反射元数据(让编辑器能识别并显示这些内容)
- 自动生成的属性访问器、序列化逻辑
- 蓝图交互所需的桥接代码
- 网络同步相关的辅助逻辑
这些代码是引擎内部运作(比如蓝图调用、编辑器属性面板、网络同步)的必要支撑。
3. 引用规则
主头文件的末尾必须包含对应的生成头文件,且这行代码要放在所有其他#include之后,示例:
// MyActor.h #include "CoreMinimal.h" #include "GameFramework/Actor.h" #include "MyActor.generated.h" // 必须放在最后 UCLASS() class MYPROJECT_API AMyActor : public AActor { GENERATED_BODY() public: UPROPERTY(EditAnywhere, Category = "Custom") int32 MyCustomValue; };
简单来说,主头文件是你定义规则的地方,生成头文件是引擎根据规则自动生成的“幕后支撑代码”,两者配合实现Unreal的反射、蓝图等核心特性。
内容的提问来源于stack exchange,提问作者SideCode
相关产品推荐
相关产品推荐

