Gandi 3.0文档
官网 打开编辑器
文档/调试工作台

问题(作品静态检查)

「问题」面板在编辑时把整个作品过一遍:所有角色、所有场景,包括休眠场景里的角色。 它找的是结构上的毛病:用了不存在的变量、调用没有定义的自制积木、没人接的广播、 没有帽子的脚本。这些在工作区里看不出来,运行起来也多半不报错,只是安静地不对。

和调试工作台「概览」页的结论不同,这里不需要运行作品,也不需要录制;打开面板就查。

(本篇暂无截图。)

打开方式#

顶栏「全部功能」抽屉里的「问题」,和「调试」在同一组。默认以悬浮窗打开,偏右下; 可以像别的面板一样停靠到布局里。

面板#

顶部一行:

控件 作用
「重新检查」 立刻扫一遍
错误 N · 警告 M · 提示 K 三档各有多少条;鼠标放上去显示检查了多少块积木、用时多少毫秒
「规则」 展开规则清单,逐条开关

下面按角色分组,每组标题可以折叠。多场景作品在角色名前面标场景名,跨场景的角色标 「跨场景」。资源库的条目单独一组,排在最后。

每条问题:

  • 标签是严重程度:错误(红)、警告(橙)、提示(蓝)。
  • 标题一句话:哪个角色、哪块积木、什么问题。
  • 说明是原因和改法。
  • 「跳转」切到那个角色、滚到那块积木并高亮。指向资源的问题跳到资源面板并选中那一条。

作品一改就自动重查,改动连着来时合并成一次(600 ms 内)。只有面板开着才会监听;关掉 就不再扫。

规则#

按面板里的排列顺序。规则开关存在浏览器里,下次打开还是这份设置。

规则 严重程度 什么时候报
未定义的变量 / 列表 错误 积木的变量 / 列表字段指向的 id 在本角色和它的舞台上都不存在。多场景作品按角色所在场景的舞台算
找不到定义的自制积木 错误 调用块的名字在本角色里没有定义,也没有别的角色把它定义成全局积木
缺扩展的积木 错误 积木的类型 VM 不认识,而且不属于原生类别。同一个角色里同一个扩展只报一条,标题写有几块。扩展装了但里面没有这块的,说明是版本不同
切换到不存在的造型 / 声音 错误 「换成造型」「换成背景」「播放声音」的下拉里是一个已经不存在的名字。填了别的积木的不查;纯数字的名字不查(运行时按编号处理);背景的「下一个 / 上一个 / 随机」不算
广播没人接 / 没人发 警告 「广播」下拉里的名字没有任何「当接收到」;「当接收到」的名字没有任何积木会发。名字不分大小写。作品里只要有一块广播积木的名字是拼出来的(放了别的积木),「没人发」就整个不查
没有帽子的脚本 警告 顶层脚本的第一块既不是帽子也不是自制积木定义。单独一块、没有分支口的不算(散落的报告块、暂放的一块指令);代码框里的脚本一样查
重名 警告 角色自己的变量 / 列表和舞台上的同名;或者两个角色把同一个名字定义成全局积木(见全局积木)
从未被调用的自制积木 提示 定义了、作品里没有一处调用。本角色的只看本角色,全局的看整个作品
跳出循环不在循环里 警告 「跳出循环」「跳过本次循环」外面没有循环包着,或者中间隔着自制积木的定义、C 型自制积木的身体。放在扩展的 C 形积木里的不报(不知道那是不是循环)
未使用的素材 提示 资源库里引用数为 0 的图片和声音,每条一行。数据和资源面板的「未使用」筛选一致

细节#

  • 检查读的是 VM 里的数据,不是画出来的积木,所以没打开过的角色、别的场景的角色一样查。
  • 「未定义的变量」只对没打开过的角色稳定:一个角色的工作区一旦打开,积木库会把缺的变量 自动建到舞台上,这条问题随之消失。
  • 全部规则一次遍历建索引,两万块积木的作品一次检查在几十毫秒内。
  • 每条规则单独 try / catch:一条规则出错只少那一条,面板不会空着。

相关#