迁移检查清单:开工前 8 问、翻译中 10 查、翻完后 5 验
主课教了翻译的顺序,这一页给你一张照着划勾的清单。翻一张图靠记性还行,翻二十张图就必须靠流程——清单的价值不在于它有多聪明,而在于它让你不必每次都重新想一遍。建议直接打印,贴在第二块屏幕旁边。
一、开工前:先回答 8 个问题
这 8 个问题都在打开 .verse 文件之前回答。它们不产出代码,只产出决定——而迁移里最贵的错误,从来都是决定错了而不是打字错了。
- ▢ ① 这张图里,哪些部分是玩法逻辑?美术、动画、材质、编辑器工具都不迁移。先把不迁移的那部分圈掉,工作量常常当场砍掉一半。
- ▢ ② 变量面板里每个变量,有没有接过 Set 节点?接过的将来写
var,没接过的不写。用 Find References 逐个查一遍,别猜(第 8 课)。 - ▢ ③ 哪些变量勾了 Instance Editable?勾了的对应
@editable,而且每一个都得想好默认值(第 22 课)。 - ▢ ④ 有几个对象 / Actor 引用?它们可能是 None 吗?这决定你是用
option,还是用带占位默认值的@editable引用(第 18 课)。 - ▢ ⑤ 事件入口有几个,分别是什么类型?引擎自带事件、Event Dispatcher、自定义事件——三者在 Verse 里的落法不一样(第 25 课)。
- ▢ ⑥ 图里有几个 Latent 节点?Delay、Timeline、各种左上角带小钟表的。每一个都会牵连出一次「宿主函数要不要挂
<suspends>」的决定(第 23 课)。 - ▢ ⑦ 有没有 Event Tick?里面在做什么?Tick 里的东西通常要换设计而不是换写法。先标记出来,别急着直译(见本课拔高拓展页)。
- ▢ ⑧ 这张图依赖哪些别的蓝图?沿着引用往外走一层,看看会不会一迁移就拖出半个项目。划不出边界,就先别开工。
八问答完,你手上应该有一张小抄:几个 var、几个 @editable、几个事件、几个需要 <suspends> 的函数。这张小抄就是你的翻译计划,接下来的工作只是把它写出来。
二、翻译中:逐项核对 10 条
这 10 条按主课六步的顺序排列,写到哪儿查到哪儿。它们全都是「能被机械检查」的条目——不需要理解上下文,只需要对着代码扫一眼。
- ▢ ① 类名与父类。
BP_PascalCase换成snake_case,父类换成当前环境的基类(今天在 UEFN 里是creative_device)。 - ▢ ② using 行。每一行
using都真的用上了;没用上的删掉,别囤积。 - ▢ ③ var 的有无。拿开工前那张小抄对一遍:该有
var的都有,不该有的一个都没多。 - ▢ ④ @editable 与默认值。每个小眼睛都落成了
@editable,而且每个字段都给了默认值(Verse 不接受空字段)。 - ▢ ⑤ 每个 Set 节点对应一个 set。然后反向再搜一遍:代码里有没有裸的
X = Y被你当成赋值写下了?那是比较,不是赋值(第 13 课)。 - ▢ ⑥ 每个 Branch 都变成了「能不能走通」的形态。
logic加了?,可失败的调用待在if这类地方(第 11、12 课)。 - ▢ ⑦ 每个 Delay 都变成 Sleep,宿主函数挂了牌子。看到
Sleep或Await(),就往上找函数签名,确认<suspends>在(第 23 课)。 - ▢ ⑧ 每个可能为空的引用都有着落。要么用
option处理,要么用带占位默认值的@editable顶上——不留「反正应该不会为空」的侥幸。 - ▢ ⑨ 一个事件只用一种听法。同一个事件既
Subscribe又Await,一次触发会惊动两边,逻辑直接翻倍(第 25 课)。 - ▢ ⑩ 极性相反的接口已封装。
Enable/Disable、Show/Hide这类跟原图字面意思反着的调用,都封进了语义明确的小函数。
第 ⑤ 条那个「反向再搜一遍」值得单独强调:忘了 set 之所以难查,是因为报错文案说的是「失败上下文」,离「你少写了两个字母」隔着一层。养成看到 failure context 先搜 set 的条件反射,能省下大量时间。
三、翻完后:5 步验收
编译通过不等于翻译正确——编译器只检查语法,不检查你有没有漏掉整整一格节点。这 5 步按成本从低到高排:
- ▢ ① 编译。Build 通过、报错为零。警告也读一遍,别习惯性略过。
- ▢ ② 逐节点划勾。把原图和译本并排放,拿开工前那张小抄一格一格划。漏掉整格是最常见也最难靠测试发现的错误。
- ▢ ③ 日志对齐。在每个关键分支加一句
Print,跑一遍,确认日志出现的顺序和原图执行线的顺序一致。迁移期间日志可以打得夸张一点,上线前再删。 - ▢ ④ 路径覆盖。原图有几条分支路径就测几条:Branch 的 True 和 False、超时和提前、绑定和未绑定。只测「正常那一条」等于没测。
- ▢ ⑤ 边界演练。故意把某个
@editable引用留空跑一次,看看失败表现是不是「按了没反应」;再故意把秒数改成 0 跑一次。你要知道它坏掉的样子,而不是只知道它正常的样子。
最后一条纪律:验收通过之前,不要动重构的念头。译本和原图行为对齐,是你后面所有优化的参照系;参照系还没立稳就开始改,出了问题连回退到哪儿都说不清。什么时候该重构、重构成什么样,交给本课的拔高拓展页。
四、小测验
清单为什么把「哪些部分是玩法逻辑」放在开工前的第一个问题?