中EN
概念页

编辑器扩展与 Python 脚本

Editor Extension & Python Scripting

扩展 UE 编辑器有三条主要路线,门槛由低到高:Python 脚本(只在编辑器中可用,适合批量处理资产和串联外部 DCC 管线)、Editor Utility Widget(基于 UMG 的蓝图编辑器界面,做成自定义标签页),以及 C++ 编辑器插件(如 Editor Standalone Window 模板,用 Slate 的声明式语法构建窗口)。

三条路线

路线本质适合限制
PythonPython Editor Script Plugin,内嵌 Python 3.11.8资产批处理(如批量生成 LOD)、与其他 3D 软件打通的管线、用 Python 自制界面控制编辑器实验性;只在编辑器中可用,PIE、独立游戏和烘焙后的程序中都不能用,不能作为玩法脚本语言
Editor Utility Widget基于 UMG 的 Widget Blueprint自定义编辑器标签页(可以从 Windows 菜单打开)Beta
C++ 编辑器插件 + Slate编辑器模块中用 Slate 构建界面深度集成的工具窗口需要 C++;Slate 是独立的 UI 框架

(Scripting the Unreal Editor Using Python、Editor Utility Widgets in Unreal Engine、Slate Editor Window Quickstart Guide for Unreal Engine)

Python

  • 启用 Python Editor Script Plugin,建议同时启用 Editor Scripting Utilities 插件,它为常见编辑器任务提供简化的 API;然后重启。之所以用 Python 3.11.8,是因为它是 VFX Reference Platform 的重要组成部分。(Scripting the Unreal Editor Using Python)
  • 运行方式:Output Log 的控制台输入栏可以切换成接受 Python 代码(print 输出也会重定向到 Output Log);命令行参数 -ExecutePythonScript=<脚本路径>;编辑器在 Python 路径中发现 init_unreal.py 时会立即自动执行它;项目设置中的 Startup Scripts 每次打开项目时运行。(Scripting the Unreal Editor Using Python)
  • 子系统也可以从 Python 访问,见 子系统。

Editor Utility Widget

基于 UMG,所以和其他 UMG Widget Blueprint 一样在蓝图中搭建;它专用于编辑器界面,可以创建自定义编辑器标签页,并像引擎自带的标签页一样从 Windows 菜单中选择。创建方式:内容浏览器右键 > Editor Utilities > Editor Utility Widget。(Editor Utility Widgets in Unreal Engine)UMG 与 Slate 的关系见 UMG、Slate 与 Common UI。

C++ 与 Slate 编辑器窗口

flowchart TD
  M["编辑器模块 StartupModule"] --> T["注册标签页生成器"]
  T --> O["OnSpawnPluginTab"]
  O --> D["SNew(SDockTab)"]
  D --> B["SNew(SBox) 布局"]
  B --> X["SNew(STextBlock) 内容"]

图中编辑器模块启动时注册标签页,打开时由 OnSpawnPluginTab 用 Slate 逐层构建控件树。(模块启动时注册标签页生成器是模板代码的结构,官方页逐行讲解了 OnSpawnPluginTab。)

怎么选

一次性的批处理或管线工作用 Python;给美术、策划用的可视化工具优先做 Editor Utility Widget;需要深度定制编辑器行为、追求性能或要随插件分发时再写 C++/Slate。这是对上表的归纳;工具本身也应纳入 自动化测试。

  1. Scripting the Unreal Editor Using Python UE 5.8 文档(Python 为实验性功能)
  2. Editor Utility Widgets in Unreal Engine UE 5.8 文档(Beta 功能)
  3. Slate Editor Window Quickstart Guide for Unreal Engine UE 5.8 文档

相关页面

游戏开发 · UE5UMG、Slate 与 Common UIUMG, Slate & Common UISlate 是 UE 平台无关的 C++ 声明式 UI 框架(编辑器即用它构建),UMG 是在其之上的可视化控件蓝图层(UE 5.8 API:UWidget 是所有暴露给 UObject 的被包装 Slate 控件的基类),Common UI 插件再在 UMG 之上补充多层界面、输入路由、手柄导航、平台按键图标和样式资产。官方 UMG 最佳实践强调事件驱动更新而非绑定/Tick、固定分辨率与 DPI 制作、用 Scale Box 而非 Render Transform 做永久缩放。游戏开发 · UE5模块、插件与构建系统Modules, Plugins & Build SystemUE 的代码由模块 (Module) 组成:每个模块是一个独立编译单元,用 [模块名].Build.cs 声明依赖。插件 (Plugin) 是可按项目启用/禁用的代码与内容集合,用 .uplugin 描述,可包含多个模块。虚幻构建工具 (UnrealBuildTool, UBT) 根据 .Target.cs 和 .Build.cs(而不是 IDE 的 .sln)编译,默认把模块编成 DLL 由一个可执行文件加载,也可整体链接成单体 (Monolithic) 可执行文件。游戏开发 · UE5子系统Subsystems子系统 (Subsystem) 是自动实例化、生命周期绑定在宿主对象上的类:Engine、Editor、GameInstance、World、LocalPlayer 五种。宿主创建时自动创建并 Initialize(),宿主关闭时 Deinitialize(),之后无引用即被 GC。它替代了「继承 GameInstance 塞管理器」的老做法,自带按类型的蓝图节点和 Python 访问,特别适合插件。官方编程页只列四种,World 子系统依据 5.8 Python API 补充。游戏开发 · UE5自动化测试Automation TestingUE 的自动化系统 (Automation System) 构建在功能测试框架之上,支持单元测试、功能测试、内容压力测试和截图对比,并借助 Unreal Message Bus 提高稳定性。测试按用途分为 Unit、Feature、Smoke(承诺 1 秒内完成)、Content Stress 和 Screenshot Comparison。它依赖引擎系统运行,所以不适合纯粹的单元测试;这种情况用 Low-Level Tests。跨进程的整局会话测试用 Gauntlet。游戏开发 · UE5蓝图与 C++ 协作Blueprint & C++ InteropEpic 官方建议:多数项目混用蓝图 (Blueprint) 与 C++,以 C++ 作为基础、在其上构建蓝图类。C++ 适合“编程”——定义系统;蓝图适合“脚本”——在已有系统上定义具体行为。两者通过反射说明符互相调用:C++ 用 BlueprintCallable/BlueprintReadWrite 等暴露给蓝图,用 BlueprintImplementableEvent/BlueprintNativeEvent 让蓝图实现或覆盖 C++ 声明的函数。游戏开发资产管线与工具链Asset Conditioning Pipeline & Tools游戏引擎的输入数据来自美术使用的数字内容创作 (DCC) 工具,但 DCC 格式几乎从不直接用于游戏,必须经过资产调理管线 (Asset Conditioning Pipeline, ACP) 导出、处理并按平台打包。围绕它还有世界编辑器、记录资产元数据的资源数据库,以及几种工具架构(独立工具、与引擎共享底层、编辑器内嵌于引擎、Web 界面),各有取舍。游戏开发数据驱动与游戏世界编辑器Data-Driven Engines & Game World Editors当游戏行为可以部分或全部由美术和策划提供的数据控制,而不只由程序员写的代码控制时,引擎就是数据驱动的。它能提高团队效率、缩短迭代时间,但工具、健壮的运行时和预览手段都要花大量成本,过度设计反而降低生产力,所以要权衡并坚持 KISS。玩法领域里对应 DCC 工具的是游戏世界编辑器:创建世界块并放入静态和动态元素、设定对象初始状态和行为。GEA 列出了它的典型功能,并比较了不同引擎在何时做平台相关优化上的取舍(GEA4 卷 II 16.3–16.4)。游戏开发游戏脚本系统Game Scripting脚本语言是主要用来让用户控制和定制软件行为的编程语言;在游戏引擎中,它是高层、相对易用、能方便访问引擎大多数常用功能的语言,程序员和非程序员都能用它开发新游戏或给现有游戏做 mod。GEA 先区分数据定义语言和运行时脚本语言,梳理语言分类与游戏脚本的典型特征(解释执行、轻量、快速迭代、方便),介绍 QuakeC、UnrealScript、Lua、Python、Pawn,列出从"脚本回调"到"脚本驱动整个游戏"的六种架构,再以 Naughty Dog 的 DCScript 为例讲虚拟机与原生函数接口,最后是对象引用、事件收发、面向对象脚本、脚本状态机和协作式多线程脚本(GEA4 卷 II 17.

输入关键词开始搜索

滚轮或双指缩放 · 拖动平移 · 双击放大 / 还原