安装与探活
启用 DreamFX 插件、确认驱动脚本能摸到引擎,以及运行环境的三条硬要求。
DreamFX 是一个 Unreal 插件,装法和别的插件没有区别:把 DreamFX/ 放进项目的 Plugins/ 目录
(或引擎的 Engine/Plugins/),重启编辑器。它依赖 Niagara,.uplugin 里已经写死了这条依赖。
| 模块 | DreamFX(Runtime)、DreamFXEditor(Editor,LoadingPhase = Default) |
| 默认启用 | 是(EnabledByDefault: true) |
| 依赖插件 | Niagara |
| 引擎 | Unreal Engine 5.8 |
| 平台 | Win64(驱动脚本是 PowerShell,dfx.ps1 需要 pwsh) |
两个模块都是编辑器侧的:生成、反编译、诊断都发生在编辑器或 commandlet 进程里。打包出去的游戏 里没有 DreamFX,只有它生成的 Niagara 资产 —— 那些是普通资产,谁都能加载。
探活:驱动脚本能不能摸到引擎
装完先跑这一条,它比打开编辑器快得多,也更能说明问题:
pwsh -File Plugins/DreamFX/.skill/dfx.ps1 list它会打印默认搜索路径上的每一个 Niagara 模块。打印出东西 = 引擎解析成功、commandlet 跑起来了、 模块索引读得到,三件事一次性验完。
如果它在打印任何东西之前就报错,那是引擎没解析出来。dfx.ps1 按这个顺序找引擎:
-Engine <root>参数;UE_ENGINE_ROOT环境变量;.uproject的EngineAssociation—— 源码引擎查注册表HKCU:\SOFTWARE\Epic Games\Unreal Engine\Builds,安装版查HKLM:\SOFTWARE\EpicGames\Unreal Engine\<版本>。
项目本身是从目标文件(或当前工作目录)向上走找 .uproject,所以在 DFX/ 里的任何位置调用它
都能找对项目;找不到就传 -Project。
编辑器侧确认
编辑器起来以后,Tools ▸ DreamFX 里应该有三项:Rebuild DFX、Verify DFX、 Open DreamFX Workspace (VSCode)。关卡工具栏上还有一个 DFX 按钮。
没有这些项,只有两种可能:模块没加载,或者进程带了 -NoDreamFXEditor。后者是有意为之的开关 ——
它关掉全部交互面(菜单、file watcher、生成资产守卫),但不关 commandlet 和解析器。调试 DreamFX
自己的时候用它。
UnrealEditor.exe "<Project>.uproject" -NoDreamFXEditor-NoDreamFXEditor 只认这一种拼写 —— 它是按裸命令行参数解析的。
运行环境要求
三条,都不是可选项。
引擎依赖的是实验性 API
DreamFX 建在引擎的 Niagara 外部编辑 API(UNiagaraExternalEditUtilities)上,这个 API 在引擎侧
标着 EXPERIMENTAL。它漂移了会怎样?启动自检把漂移显形,而不是静默吸收 —— 这是有意的设计,
一个悄悄降级的生成器比一个报错的生成器危险得多。
宿主项目要启用相同的内容插件
如果创作项目启用了 NiagaraFluids 这类内容插件,消费这些源码的项目也必须启用。模块探针没有
基线时不会猜,引用其模块的源码会以缺口注释或编译错误的形式显形
(DFX3001)。
一整族解析不了的名字共享同一个前缀 —— /NiagaraFluids/* —— 说明的是挂载点没挂,不是源码写错了。
写包的命令要关编辑器
build、corpus、mirror-diff、decompile-all 都写 .uasset。编辑器开着的时候它也写同一批包,
谁后存谁赢,两边都不吭声。dfx.ps1 看见有编辑器进程会警告,但它没法知道那个编辑器开的是哪个项目,
所以那是建议不是门。
目录:源码放哪
源码放在 DFX/ 下 —— 项目自己的,或者任意插件的:
DevTest/DFX/ Root="" 或 Root="Game" -> /Game
DevTest/Plugins/MoonToon/DFX/ Root="Plugin.MoonToon" -> /MoonToon每个 DFX/ 目录都是一个源码根:被发现、被 watcher 监视、被 build -All 收进来。展开讲在
目录与命名。