用途:在 UE 5.4–5.7 的 C++ 编辑器模块中,以代码方式生成完整 .uasset 资产(蓝图、控件蓝图、领域资产),包括变量、函数图、事件图连线、控件层级、UMG 动画与自定义资产图,替代手工在编辑器中点击或修剪二进制资产。典型场景是生成 Marketplace 示例内容,使其可复现再生成。若只需运行时创建控件(CreateWidget 等),本技能不适用。
前提:需要 Type=Editor(或 UncookedOnly)的 C++ 编辑器模块;Python 无法编写事件图,UEdGraph/UK2Node_* 未暴露,如需 Python 入口,应在 C++ 中提供 UBlueprintFunctionLibrary 的 UFUNCTION。模块至少依赖 UnrealEd、BlueprintGraph、Kismet、KismetCompiler、AssetTools、AssetRegistry;控件蓝图还需 UMG、UMGEditor、MovieScene、MovieSceneTracks。遵循 IWYU,显式包含引擎头文件。
核心模型:资产 = UPackage + UObject(UBlueprint/UWidgetBlueprint 等),含源 UEdGraph(UK2Node_* 节点与 UEdGraphPin 连线)与编译生成的 UClass。流程为创建/加载包、用 FKismetEditorUtilities::CreateBlueprint 创建资产、构建内容、连线、MarkBlueprintAsStructurallyModified 与 CompileBlueprint、最后保存包。
关键规则:UK2Node_CallFunction 须先 SetExternalMember 再 AllocateDefaultPins,变量节点同理;结构变化用 MarkBlueprintAsStructurallyModified;非纯函数必须接入 exec 链否则被剪枝;节点避开 (0,0) 以免与自动事件重叠;引用同批新建内容时需两遍编译。
已知限制:5.7 中 UUserWidget 无 PlayAnimationByName;动画 FName 须与显示标签一致;Outer 层级必须正确;GameplayTag 需在模块加载时注册;AddFunctionGraph 默认不生成 Result 节点。本技能不涵盖资产打包、Editor Utility Widget 设计、运行时 UMG 及自定义 UEdGraph schema 的编译器入口。