You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.22 15:48:22