文档/调试工作台
问题(作品静态检查)
「问题」面板在编辑时把整个作品过一遍:所有角色、所有场景,包括休眠场景里的角色。 它找的是结构上的毛病:用了不存在的变量、调用没有定义的自制积木、没人接的广播、 没有帽子的脚本。这些在工作区里看不出来,运行起来也多半不报错,只是安静地不对。
和调试工作台「概览」页的结论不同,这里不需要运行作品,也不需要录制;打开面板就查。
(本篇暂无截图。)
打开方式#
顶栏「全部功能」抽屉里的「问题」,和「调试」在同一组。默认以悬浮窗打开,偏右下; 可以像别的面板一样停靠到布局里。
面板#
顶部一行:
| 控件 | 作用 |
|---|---|
| 「重新检查」 | 立刻扫一遍 |
| 错误 N · 警告 M · 提示 K | 三档各有多少条;鼠标放上去显示检查了多少块积木、用时多少毫秒 |
| 「规则」 | 展开规则清单,逐条开关 |
下面按角色分组,每组标题可以折叠。多场景作品在角色名前面标场景名,跨场景的角色标 「跨场景」。资源库的条目单独一组,排在最后。
每条问题:
- 标签是严重程度:错误(红)、警告(橙)、提示(蓝)。
- 标题一句话:哪个角色、哪块积木、什么问题。
- 说明是原因和改法。
- 「跳转」切到那个角色、滚到那块积木并高亮。指向资源的问题跳到资源面板并选中那一条。
作品一改就自动重查,改动连着来时合并成一次(600 ms 内)。只有面板开着才会监听;关掉 就不再扫。
规则#
按面板里的排列顺序。规则开关存在浏览器里,下次打开还是这份设置。
| 规则 | 严重程度 | 什么时候报 |
|---|---|---|
| 未定义的变量 / 列表 | 错误 | 积木的变量 / 列表字段指向的 id 在本角色和它的舞台上都不存在。多场景作品按角色所在场景的舞台算 |
| 找不到定义的自制积木 | 错误 | 调用块的名字在本角色里没有定义,也没有别的角色把它定义成全局积木 |
| 缺扩展的积木 | 错误 | 积木的类型 VM 不认识,而且不属于原生类别。同一个角色里同一个扩展只报一条,标题写有几块。扩展装了但里面没有这块的,说明是版本不同 |
| 切换到不存在的造型 / 声音 | 错误 | 「换成造型」「换成背景」「播放声音」的下拉里是一个已经不存在的名字。填了别的积木的不查;纯数字的名字不查(运行时按编号处理);背景的「下一个 / 上一个 / 随机」不算 |
| 广播没人接 / 没人发 | 警告 | 「广播」下拉里的名字没有任何「当接收到」;「当接收到」的名字没有任何积木会发。名字不分大小写。作品里只要有一块广播积木的名字是拼出来的(放了别的积木),「没人发」就整个不查 |
| 没有帽子的脚本 | 警告 | 顶层脚本的第一块既不是帽子也不是自制积木定义。单独一块、没有分支口的不算(散落的报告块、暂放的一块指令);代码框里的脚本一样查 |
| 重名 | 警告 | 角色自己的变量 / 列表和舞台上的同名;或者两个角色把同一个名字定义成全局积木(见全局积木) |
| 从未被调用的自制积木 | 提示 | 定义了、作品里没有一处调用。本角色的只看本角色,全局的看整个作品 |
| 跳出循环不在循环里 | 警告 | 「跳出循环」「跳过本次循环」外面没有循环包着,或者中间隔着自制积木的定义、C 型自制积木的身体。放在扩展的 C 形积木里的不报(不知道那是不是循环) |
| 未使用的素材 | 提示 | 资源库里引用数为 0 的图片和声音,每条一行。数据和资源面板的「未使用」筛选一致 |
细节#
- 检查读的是 VM 里的数据,不是画出来的积木,所以没打开过的角色、别的场景的角色一样查。
- 「未定义的变量」只对没打开过的角色稳定:一个角色的工作区一旦打开,积木库会把缺的变量 自动建到舞台上,这条问题随之消失。
- 全部规则一次遍历建索引,两万块积木的作品一次检查在几十毫秒内。
- 每条规则单独 try / catch:一条规则出错只少那一条,面板不会空着。