拓展 · EXTRA
UE6 编辑器里的 AI 助手:已知的与未知的
把所有公开信息整理成一张表:哪些能力已发布、哪些只是已宣布、哪些根本尚未公布,以及每一条对你的工作流意味着什么。
进入拓展 →全站最后一课。蓝图作者向来没法把一张节点图粘给 AI,也没法让 AI 交回一张图。Verse 改变了这件事——不是因为 AI 变强了,是因为你的逻辑变成了文本。这一课讲文本解锁的四件事、UE6 编辑器里已公布的 AI、怎么提问才有用,以及一套「收到 AI 代码之后」的四步验收法。最后,我们把 30 课的账一起算一遍。
先还原一个所有蓝图作者都经历过的场面。你卡在一个 bug 上,想找人问问——同事、论坛,或者一个 AI 助手。你的标准动作是:截图。
然后你就开始丢东西。截图里没有引脚的类型,没有变量的默认值,没有 Details 面板上那几个决定成败的勾选项,没有被 Collapse 折叠进去的三张子图,也没有另外两个明明参与了这段逻辑、却不在这一屏里的资产。对面拿到的是一张画,得靠猜把它还原成逻辑。你多半还要补一句「哦对了,那个 Delay 是 5 秒」——补了三句,还是有第四句忘了补。
反方向更难。就算对面想通了,它也交不回来:没有人能给你生成一份 .uasset。它只能用文字告诉你「在 Branch 的 True 那一路后面加一个 Set 节点,把 Bool 变量置为 true」,然后由你打开编辑器,手动找位置、手动连线、手动确认自己没连错。一次求助,两头都在做有损转换。
Verse 把这条链路的两头同时打通了。注意原因:不是 AI 变强了——能读懂代码这件事,AI 早就会了。变的是你的逻辑的存在形式。它从一张只能被眼睛读的图,变成了一份能被完整粘贴、能被逐行引用、能被原样交还的文本。
这就是本课的技术前提,只有一句话:Verse 是文本代码。接下来五节讲的每一件事,都是这一句话的推论。
「变成文本」听起来像个格式问题,其实是一次能力跃迁。它一次性解锁了四件在节点图世界里做不到、或者做起来极其别扭的事。
第一件:粘贴与提问。你可以把整个 .verse 文件粘进对话框,一个字符都不丢:类型标注在、specifier 在、缩进层级在、你写的注释也在。AI 看到的东西,和编译器看到的是同一份。而蓝图这边,你能给出的最高保真度就是一张截图加一段口述——信息在传递的第一步就已经缺斤少两了。
第二件:diff 与 code review。文本的改动能以「行」为单位呈现:红色删掉 3 行、绿色加上 5 行。评审的人只需要看这 8 行,不必重读整个文件;而且这 8 行本身也是文本,能贴进聊天、能被逐行评论、能被 AI 读。.uasset 是二进制资产,版本控制工具只能告诉你「这个文件变了」;变在哪,得用 Blueprint Diff 工具把两份资产并排打开,用眼睛比——比出来的结论留不下痕迹,也粘不进任何地方。
第三件:版本控制里的合并。两个人同时改一个 .verse 文件的不同函数,Git 能自动把两份改动合到一起;改到同一行才叫冲突,而冲突也是逐行摆在你面前的,你可以两边各留一半。两个人同时改一个 .uasset,团队里的标准做法是独占签出(签出即锁文件):谁先锁谁改,后面的人等着。真撞上了,基本只能二选一——有一个人的一整个下午会被丢掉。这一条是团队协作里最实的差别,和 AI 无关,但和你的项目寿命有关。
第四件:让 AI 批量改。「把这 12 个设备里所有的 Print 调用换成我们自己的日志函数」,在文本世界里是一次查找替换,或者一次「AI 交回 12 份改好的文件、你逐份 diff 验收」。在节点图世界里,这是打开 12 个资产、在每张图里找到 Print String 节点、手工换掉再把引脚重连一遍——没有工具能替你做,因为没有一份稳定的文本表示可供操作。
| 你想做的事 | 节点图(.uasset) | Verse(.verse 文本) |
|---|---|---|
| 把逻辑完整交给别人 | 截图 + 口述,信息有损 | 粘贴全文,零损耗 |
| 看清这次到底改了什么 | Blueprint Diff 工具肉眼比对,结论传不出去 | 行级 diff,可粘贴、可逐行评论 |
| 两个人同时改同一份 | 独占签出(锁文件);真撞上基本二选一 | 自动三方合并,冲突逐行挑 |
| 一次改 12 个地方 | 打开 12 个资产手工改 | 一次批量替换或一次 AI 批改,再逐份验收 |
这四件事有一个共同的名字:可被机器处理。版本控制、自动化脚本、代码评审工具、AI 助手——所有能替你干活的东西,认的都是「行」。节点图没有行,所以它们全都帮不上忙。
这一节的每一条都会带一个状态标签。AI 相关的消息更新得比引擎版本还快,分清「已发布」「已宣布」「尚未公布」比记住细节更重要。
已发布(标注为实验性)。Unreal Engine 5.8 随引擎提供了一个叫 Unreal MCP 的插件,官方文档在页首明确写着 Experimental:可以学着用,但拿它上线要谨慎。它做的事是在 Unreal Editor 进程里内嵌一个 MCP 服务器,让任何兼容 MCP 的 AI 客户端——官方文档点名了 Claude Code、Cursor、VS Code、Gemini 和 MCP Inspector——通过本机的 HTTP 连接来驱动编辑器,调用「生成 Actor、配置灯光、创建材质实例、检查 Slate 控件、跑自动化测试」这一类工具。官方同时把限制写得很直白:默认只监听回环地址且没有认证层,很多功能不完整,API 与数据格式随时可能变。
已宣布,形态尚未公布。Epic 在 State of Unreal 2026 上宣布 UE6 会把生成式 AI 助手做进编辑器,并强调接口是开放的:你可以接 Claude、接 Gemini,也可以接自己的模型。Epic 的公开表态是,AI 的定位是创造力与生产力的放大器,而不是替代品——它不会替代编辑器,也不会自己造出一整个游戏;要不要用、怎么接进自己的管线,决定权在开发者手里。至于 UE6 编辑器里这个助手最终长什么样、什么时候能用,尚未公布。
尚未公布。UEFN 是否会支持 Unreal MCP,Epic 尚未公布。Verse 的可视化脚本层(社区称之为 Visual Verse)的形态,同样尚未公布。所以今天在 UEFN 里和 AI 协作,主流方式仍然是最朴素的那一种:把 .verse 文件的内容粘进对话框,把 AI 给的代码粘回编辑器。
而这恰恰是本课的重点:这条路不需要等任何新功能,它今天就通。编辑器内建的助手会让它更顺手,但不会改变它的原理——原理就是第一节那句话,你的逻辑是文本。
同一个人、同一个模型,提问方式换一下,答案质量能差出一个数量级。下面三组对照,差别不在措辞礼貌不礼貌,而在你给没给出对方判断所需的信息。
| 差的提问 | 好的提问 | 差在哪 |
|---|---|---|
| 「我的门不工作,怎么修?」 | 「这是我的 door_controller.verse(粘贴全文)。UEFN 里编译报错 This expression must appear in a failure context,指向第 24 行。我要的行为是:玩家按下按钮就把这名玩家标记为已开门;查不到记录时当作没开过。请先解释这条报错的含义,再给修法。」 |
前者没有代码、没有报错原文、没有环境、没说想要的行为。AI 只能给一个放之四海皆准、因此对你毫无用处的答案。 |
| 「用 Verse 写一个计分板。」 | 「环境:UEFN,Verse。目标:每名玩家一份分数,跨对局保留。已有一个 button_device,玩家按下加 10 分。请用模块级 weak_map(player, int) 实现,并说明每一处失败上下文为什么需要 if。只写这一个功能,不要顺带写 UI。」 |
前者没说环境、没说数据要不要持久化、没划边界。AI 会替你猜,而它的猜测往往来自别的语言的习惯。 |
| 「把这段改成用 for 循环写。」 | 「这段代码现在会漏掉数组里的最后一个元素,我要的行为是每个元素都处理一次。请指出原因、给出修法,并说明 Verse 的 for 在这里和蓝图 ForEach 有什么语义差别。」 |
前者规定了写法,可你真正的问题是行为不对。写法一旦被你定死,万一它不是最好的解,对面也不会告诉你了。 |
把三组对照的共同点抽出来,就是五条:
using 了哪些模块。同一段 Verse 在不同环境下能用的 API 并不一样。好消息讲完了,讲坏消息。AI 在 Verse 上翻的车,有三类特别典型,而且都不是「它偷懒」,是结构性的。
它会编出不存在的 API。原因不神秘:模型见过的 Python、C++、C# 代码以亿行计,见过的 Verse 代码少得多——Verse 从 2023 年才开始在 UEFN 生产环境跑,API 面比主流语言小得多,公开语料也薄得多。语料越薄,模型越容易「按别的语言的样子」补出一个听上去合情合理、但在 Verse 里根本不存在的函数名。它不是在骗你,它是在你没给足上下文时按概率填空。
它会给出过时写法。Verse 自 2023 年起一直在演进,模型的语料里混着各个时期的写法。一段两年前完全正确的代码,今天可能已经换了名字或换了签名。
它会忽略失败上下文与并发语义。这两样恰好是 Verse 最不像别的语言的地方,也正是模型最容易「按常识」抹平的地方:该包 if 的地方直接写、该标 <suspends> 的函数当成同步函数调、race 与 sync 的取消语义随手忽略。
看一个典型的翻车现场。你要的是「给玩家加分,分数按玩家分账」,AI 交回来这个:
using { /Fortnite.com/Devices }
using { /Verse.org/Simulation }
using { /UnrealEngine.com/Temporary/Diagnostics }
var PlayerScores:weak_map(player, int) = map{}
score_device := class(creative_device):
# 读和写都没过一道 Branch —— 编译不通过
AddScore(Player:player, Delta:int):void =
Old := PlayerScores[Player]
set PlayerScores[Player] = Old + Delta
Print("新分数:{Old + Delta}")
结构对、命名对、注释也像模像样,唯独两处抄了近路:从 weak_map 取值可能取不到、往 weak_map 写值也可能写不进,这两处都必须待在「允许走不通的地方」。这正是第 12 课失败上下文那一套——而它是模型最容易忽略的一套,因为别的语言里没有它。下面是修好的版本,点「运行下一步」,看那两道被 AI 省掉的 Branch 各自在做什么。
using { /Fortnite.com/Devices }
using { /Verse.org/Simulation }
using { /UnrealEngine.com/Temporary/Diagnostics }
# 模块级 weak_map:一名玩家一格
var PlayerScores:weak_map(player, int) = map{}
score_device := class(creative_device):
AddScore(Player:player, Delta:int):void =
var NewScore:int = Delta
if (Old := PlayerScores[Player]):
set NewScore = Old + Delta
if (set PlayerScores[Player] = NewScore):
Print("新分数:{NewScore}")
点「运行下一步」,看代码怎么一行行执行。
所以,收到任何一段 AI 给的 Verse,固定走四步:
[] 取下标、调 <decides> 函数——有没有老实待在 if 里?这是 AI 最爱抄近路的地方。注意这四步里没有一步叫「相信它」,也没有一步叫「怀疑它」。你不是在检查对方诚不诚实,你是在检查它有没有理解你的项目——而它没有你的项目,它只有你给它的那几百行。信息是你给的,验收当然也得你来。
同样四件事——求助、评审、合并、批量改——在两个世界里的做法完全不同。差异那一列是重点。
| 蓝图里的做法 | Verse 里的写法 | 差异 |
|---|---|---|
| 求助:截图事件图表,再口述 Details 面板上的设置 | 求助:粘贴整个 .verse 文件 |
截图是有损转换——类型、默认值、折叠的子图全丢了;文本是无损的,对方看到的和编译器看到的一样 |
| 评审:用 Blueprint Diff 打开两份资产并排肉眼比 | 评审:行级 diff,红绿两色,可逐行留评论 | 蓝图的评审结论只存在于评审者脑子里,粘不进任何地方;文本评审本身也是文本,可归档、可检索、可喂给 AI |
| 合并:独占签出(签出即锁文件),真撞上基本二选一 | 合并:Git 自动三方合并,只有改到同一行才算冲突 | 二进制资产没有「行」,工具无从下手;这不是工具不努力,是格式本身没给出可合并的粒度 |
| 批量改:打开 12 个资产,一个个手工换节点、重连引脚 | 批量改:一次查找替换,或让 AI 交回 12 份改好的文件再逐份 diff | 文本能被脚本和模型操作,节点图不能——差别不在难度,在可不可能 |
| AI 交回结果:只能用文字描述「该在哪加一个 Set 节点」 | AI 交回结果:直接给你一份能编译的文件 | 输出侧和输入侧卡在同一个问题上:有没有文本表示 |
这张表里所有的差异只有一个根:节点图是画给人看的,文本是同时写给人和机器看的。蓝图当年选择「画」,换来的是零门槛的直观;Verse 选择「写」,换来的是整个软件工程工具链——版本控制、评审、自动化、AI——全部可用。两种取舍各有代价,只是今天能替你干活的那一类工具,恰好全都长在文本这一侧。
要补一句状态:Actor 与 Blueprint 在 UE6 Early Access(Epic 官方路线图目标为 2027 年底)及早期版本中完整支持,弃用要等 Scene Graph 足够成熟,时间未定;Epic 已承诺在弃用前提供转换工具,但尚未发布。所以这两个世界会长期并存。也正因为并存,「哪些逻辑值得优先搬进 Verse」有了一个很实际的判断标准:最需要被评审、被合并、被批量修改的那些。
30 课到这里走完了。回头看一眼这条路:第一章问的是那个真正让你点进来的问题——你的蓝图技能会不会作废;第二章把蓝图的每一个名词翻译成了 Verse,把节点图翻译成了缩进块;第三到第六章,变量、流程、容器、函数与类型,一件件从面板搬进了代码;第七章讲时间与并发,那些在蓝图里要靠 Delay、Timeline 和一堆布尔标志拼出来的东西,在 Verse 里有了名字;第八章进了 Scene Graph 的新世界,Actor 变成 entity,继承树变成组件;第九章你把一整张蓝图完整翻译成了 Verse,然后是这一课——学会让 AI 一起干活。
引擎会换版本。框架会换名字:Actor 之后是 entity,蓝图之后有 Scene Graph,Scene Graph 之后还会有别的东西。今天最好的 AI,明年就是基线。这些都会变,而且变得比你换一次项目还快。
但你这 30 课学到的东西不在那个更新队列里。你学的是一门语言——类型是什么、作用域怎么划、失败为什么值得单独有一套上下文、并发的取消语义为什么必须显式、为什么组合优于继承。这些概念在 Verse 出现之前就存在于别的语言里,在下一个引擎、下一个框架里还会存在。它们不是 Epic 的发明,Epic 只是把它们摆进了游戏开发的正中央。
至于 AI:它会写得越来越快,也会越来越少犯低级错。但它永远不会替你决定这段代码该不该进你的项目、这个取舍值不值、这个 bug 是修一行还是重构一层。做这些判断需要读得懂代码——而这正是你刚刚花 30 课换来的能力。
框架会换,AI 会更强,读得懂代码的人始终是那个做决定的人。这就是这门课真正交到你手上的东西。
最后三道关。答对拿星星 ★,答错可以一直重试,零惩罚。
为什么 Verse 比节点图更适合和 AI 协作?
关于 UE6 编辑器里的 AI,下面哪一句符合已公开的信息?
AI 交给你一段 Verse,编译通过了。接下来最该做的是什么?
拓展 · EXTRA
把所有公开信息整理成一张表:哪些能力已发布、哪些只是已宣布、哪些根本尚未公布,以及每一条对你的工作流意味着什么。
进入拓展 →技巧 · EXTRA
五个可直接复制的模板:新写功能、解释代码、定位编译错误、把蓝图翻成 Verse、补测试用例。每个都标好了「必须填的空」,附一组反面例子。
进入拓展 →拔高 · EXTRA
技术层面讲透:行级 diff 与三方合并怎么工作,二进制资产为什么只能锁文件,以及模型处理文本为什么远好于处理图结构。
进入拓展 →