转储工具

转储工具

C++ 头文件生成器

C++ 转储工具可根据 UE4 类和蓝图生成 C++ 头文件。

生成头文件的默认快捷键为 CTRL + H,可以在 Mods/Keybinds/Scripts/main.lua 中修改。

它为每个蓝图(包括动画蓝图和控件蓝图)生成一个 .hpp 文件,并将所有基类写入 <ProjectName>.hpp 或 <EngineModule>.hpp。文件开头先列出所有类,随后列出所有结构体。枚举单独存放在文件中,文件名与对应类相同,但末尾增加 _enums。

配置

  • DumpOffsetsAndSizes(bool)

    • 是否输出属性偏移和大小。
    • 默认值:1。
  • KeepMemoryLayout(bool)

    • 是否使类和结构体的内存布局保持准确。
    • 如果要在实际 C++ 项目中使用生成的头文件,必须设为 1。
    • 设为 0 时,不生成用于填充的成员变量。
    • 默认值:0。

    警告:目前设为 1 仍没有实际作用,因为无论如何内存布局都不准确!

  • LoadAllAssetsBeforeGeneratingCXXHeaders(bool)

    • 是否在生成头文件前强制加载所有资源。
    • 默认值:0。

    警告:可能需要额外数 GB 内存,运行不稳定;转储后如果继续越过主菜单加载游戏,将导致游戏崩溃。

Unreal Header Tool(UHT)转储工具

生成兼容 Unreal Header Tool 的 C++ 头文件,用于创建游戏的镜像 .uproject 项目。关于这些头文件的使用方法,请参阅这篇指南。

生成头文件的默认快捷键为 CTRL + Numpad 9,可以在 Mods/Keybinds/Scripts/main.lua 中修改。

配置

  • IgnoreAllCoreEngineModules(bool)

    • 是否跳过生成引擎所属的包;对于修改过引擎的游戏尤其有用。
    • 默认值:0。
  • IgnoreEngineAndCoreUObject(bool)

    • 是否跳过生成 Engine 和 CoreUObject 包。
    • 默认值:1。
  • MakeAllFunctionsBlueprintCallable(bool)

    • 是否强制为所有 UFUNCTION 宏添加 BlueprintCallable。
    • 默认值:1。

    警告:这会使生成的头文件出现一些错误,需要手动修复。

  • MakeAllPropertyBlueprintsReadWrite(bool)

    • 是否强制为所有 UPROPERTY 宏添加 BlueprintReadWrite。
    • 同时强制为所有 UPROPERTY 宏添加 meta=(AllowPrivateAccess=true)。
    • 默认值:1。
  • MakeEnumClassesBlueprintType(bool)

    • 当枚举的底层类型为隐式类型或 uint8 时,是否强制为其 UENUM 宏添加 BlueprintType。
    • 默认值:1。

    警告:这也会将原本隐式的底层类型强制设为 uint8。

  • MakeAllConfigsEngineConfig(bool)

    • 对于使用 DefaultConfig、GlobalUserConfig 或 ProjectUserConfig 的所有 UCLASS 宏,是否强制设置 Config = Engine。
    • 默认值:1。

对象转储工具

将所有已加载对象转储到 UE4SS_ObjectDump.txt 文件(可以开启强制加载全部资源)。

转储对象的默认快捷键为 CTRL + J,可以在 Mods/Keybinds/Scripts/main.lua 中修改。

输出示例:

[000002A70F57E5C0] Function /Game/UI/Art/WidgetParts/Basic_ButtonScalable2.Basic_ButtonScalable2_C:BndEvt__Button_0_K2Node_ComponentBoundEvent_0_OnButtonClickedEvent__DelegateSignature [n: 5343AA] [c: 000002A727993A00] [or: 000002A708466980]
[000002A70F57E4E0] Function /Game/UI/Art/WidgetParts/Basic_ButtonScalable2.Basic_ButtonScalable2_C:PreConstruct [n: 4057B] [c: 000002A727993A00] [or: 000002A708466980]
[000002A70F876600] BoolProperty /Game/UI/Art/WidgetParts/Basic_ButtonScalable2.Basic_ButtonScalable2_C:PreConstruct:IsDesignTime [o: 0] [n: 4D63DB] [c: 00007FF683722CC0] [owr: 000002A70F57E4E0]

输出中有多组方括号,每组含义不同。下表说明各字母标记的含义。第一组方括号中的值是对象或属性在内存中的存储地址。

标记 含义 UE 成员变量
n 对象/属性的名称 NamePrivate
c 对象/属性/枚举值的类 ClassPrivate
or 对象的 Outer OuterPrivate
o 属性值在对象中的偏移 Offset_Internal
owr FField 的所有者,仅适用于 4.25+ Owner
kp FMapProperty 的键属性 KeyProp
vp FMapProperty 的值属性 ValueProp
mc 此 FClassProperty 引用的类 MetaClass
df 此 FDelegateProperty 引用的函数 FunctionSignature
pc 此 FObjectProperty/FFieldPathProperty 引用的类 PropertyClass
ic 此 FInterfaceProperty 引用的类 InterfaceClass
ss 此 FStructProperty 引用的结构体 Struct
em 此 FEnumProperty 引用的枚举 Enum
fm 此 FBoolProperty 引用的字段掩码 FieldMask
bm 此 FBoolProperty 引用的字节掩码 ByteMask
v 此枚举键对应的值 不适用
sps 此 UClass 的 SuperStruct SuperStruct
ai 此 FArrayProperty 存储的属性 Inner
f UFunction 的原生函数包装器;非原生函数则为 ProcessInternal Func

配置

  • LoadAllAssetsBeforeDumpingObjects(bool)
    • 是否在转储对象前强制加载全部资源。
    • 默认值:0。

    警告:可能需要额外数 GB 内存,运行不稳定;转储后如果继续越过主菜单加载游戏,将导致游戏崩溃。

.usmap 转储工具

为无版本属性生成 .usmap 映射文件。

转储映射的默认快捷键为 Ctrl + Numpad 6,可以在 Mods/Keybinds/Scripts/main.lua 中修改。

默认情况下,除了原生类型,转储还包含蓝图生成的类、结构体和枚举。可以取消 GUI 的 Dumpers 页签中的 Include Blueprint-generated types 复选框,或在 Lua 中调用 DumpUSMAP(false) 来禁用此行为。

感谢 OutTheShade 提供最初的实现。

.jmap 转储工具

生成 .jmap 反射转储(JSON 格式,由 trumank 定义)。

转储包含类、函数、结构体和枚举的完整反射数据(包括属性偏移、大小和标志)、类默认对象的属性值,以及近似的虚函数表布局。jmap CLI 可以将其转换为 .usmap 或 C++ 头文件,ue_binja 插件可以将其应用于 Binary Ninja 数据库。

默认转储快捷键为 Ctrl + Numpad 5,可以在 Mods/Keybinds/Scripts/main.lua 中修改。也可以从 GUI 的 Dumpers 页签触发,或调用 Lua 函数 DumpJMAP()。

默认情况下,除了原生对象,转储还包含蓝图生成的类、结构体和枚举(以及它们的 CDO)。可以取消 GUI 的 Dumpers 页签中的 Include Blueprint-generated types 复选框,或在 Lua 中调用 DumpJMAP(false) 来禁用此行为。

文件写入 UE4SS 工作目录,命名为 <GameName>-<EngineVersion>-<UE4SSCommitSHA>.jmap。

.umap 重建转储工具

将所有已加载 Actor 转储到 ue4ss_static_mesh_data.csv,以便在编辑器中生成 .umap。

要在编辑器中加载转储的 Actor 并重建 .umap,必须满足两个前提:

  • 所有转储的 Actor(静态网格及其材质/纹理)都必须已在编辑器中重建。
  • 从 Releases 页面下载 zMapGenBP.zip,并按照压缩包内 Readme 文件的说明操作。

转储映射的默认快捷键为 Ctrl + Numpad 7,可以在 Mods/Keybinds/Scripts/main.lua 中修改。


原文:docs/feature-overview/dumpers.md · 固定提交 560411f18512 · 来源与 MIT 许可