Gandi 3.0文档
官网 打开编辑器
文档/自制积木与数据

变量和列表

变量用来保存作品运行中的数据,列表是一组变量。这一篇讲怎么新建、怎么改名和删除、怎么修改 一个已有变量的作用域,以及 Gandi 3.0 比原版多出的那一档「仅本场景」。把它们显示在舞台上, 见舞台上的监视器。

新建#

变量和列表在积木栏里是两个分类,各有自己的图标和颜色(列表是橙红,和列表积木一致)。 新建的按钮在各自分类顶上:「变量」里是「建立一个变量」,「列表」里是「建立一个列表」。

新建变量:积木上打名字,底下三个作用域

中间那块橙色的不是装饰,它就是建好之后会出现在积木栏里的那块积木,名字直接写在它 身上。建列表时它是橙红色,也就是列表积木的颜色:

新建列表:同一个对话框,颜色和第一档的名字都跟着换

Enter 等于「确定」,Esc、点背景、右上角 × 都是取消。

三个档位:谁看得见#

档 谁看得见 存在哪
全局变量 / 全局列表 所有场景、所有角色 舞台
仅本场景 这个场景里的所有角色;切换场景后它根本不存在 舞台
仅本角色 只有当前这个角色 角色自己

默认选中的是「仅本场景」:一关的分数、血量本来就应当随关卡变化,需要共用时再特意选择 全局。排列顺序从大到小:全局 → 本场景 → 本角色。

左边那个小图标画的是作用域:容器在上、值条在下,值条铺多宽就表示这份值属于谁。

  • 仅本场景 —— 一排屏(一块屏代表一个场景),只有第一块底下有条:只有这个场景里有它;
  • 仅本角色 —— 换成一排角色卡片,只有第一个底下有条:只有它能用;
  • 全局 —— 一个地球:所有场景共用。

前两张是同一张图换了容器,因为这两种情况本来就对称:换一个场景、换一个角色,都看不见它。 全局那一档原本也用这套记号(两块屏共一条),但「两条」和「一条」在 24 像素下只差中间一道 缝,难以分辨,所以换成了轮廓完全不同的地球。

在舞台上建变量时「仅本角色」是灰的,提示写着「舞台上的只能是全局的」:

选中舞台时,「仅本角色」不可选

积木栏里分开列#

建好之后,「变量」分类里的变量和列表按这三档分开列出,每一档一条小标题,顺序同样从大 到小:

积木栏里按作用域分成三段

一个角色能看见的变量本来就来自三个地方,过去它们排成一列,名字挨着名字,无法分辨各自的 来源。作用域不是细节:换场景、换角色、复制角色时,它决定这个变量是否还在。

只有一档时不显示标题(例如一个作品里全是全局变量),此时标题没有信息量。列表那一段同理, 各自分组。

重名#

名字重复时当场拦截,不会等到关闭对话框才报错:

「已经有一个叫「分数」的变量了」

名字留空时提示「给这个变量起个名字」。「仅本场景」和「全局」都建在舞台上,所以它们的重名 检查针对同一批名字。

改名、删除、换作用域#

在积木栏里右键那块变量(或列表)积木:

积木栏里的右键菜单:修改变量名 / 删除变量 / 改为仅本场景
菜单项 作用
修改变量名 同一个对话框,但没有那三个档位:改名不改变作用域
删除变量「X」 连同用到它的积木一起删除
修改变量作用域… 在三档之间切换,打开一个对话框(见下)
改名:名字预先选中,没有作用域那一排

删除时用到它的积木在两处以上才会确认(「删除 2 处「分数」变量吗?」)。只有一处或者 没有任何引用时直接删除,不再确认。

工作区里的变量积木右键也有同样的那一条作用域,另外还有「复制」「添加注释」「删除」、一组 「换成别的变量」和「添加到资源库」。

改作用域#

「修改变量作用域…」打开的对话框与新建时相同:同一排三档、同一套图标,当前那一档标着 「现在」:

改作用域:三档挑一个,底下说明后果

三档两两可换,包括角色私有和舞台之间:

换成 会发生什么
全局变量 所有场景共用一份;原本是「仅本场景」时,别的场景各自那一份值会丢失
仅本场景 只有这个场景里有它,别的场景里用到它的积木会失效
仅本角色 变量移到当前这个角色上,别的角色不再能看见它

选中某一档时,下面先写出这一档的后果:值的去向、哪些角色的积木会变成「未定义」,这些在切换 之后就无法再查到。有角色受影响时这句话显示为红色,并指明是哪几个。

迁移过程不改名字也不改值,变量的身份不变,所以那个角色原有的积木照常可用。别的角色引用 它的积木会变成「未定义」,这是「仅本角色」本身的含义。

名字重复时这一步无法完成,提示写在同一行,「确定」随之置灰:舞台上已有同名变量(向上迁移 时),或者那个角色上已有同名变量(向下迁移时)。在舞台上修改时「仅本角色」是灰的,与新建时 一致。

修改后不能撤销(Ctrl + Z 作用于积木,不作用于变量的作用域),所以每一档的后果都会 预先写明。修改完成后弹出一句提示说明改了什么:「已改为全局变量,另外 2 个场景那一份值没了」 「已改为仅本角色,只有「小猫」能用」。

改完之后第一次按 Ctrl + Z 什么都不撤,只提示「修改变量作用域不能撤销,再按一次撤销更早的 编辑」;再按一次才继续往下撤 —— 这一下是为了拦住「作用域改不回来,却顺手把上一次的积木编辑 撤掉了」。

广播#

广播(消息)不是变量,但它的下拉是同一套控件,所以顺带说一下。

点广播积木上的下拉,列出这个作品里所有的消息,最上面是「新消息」,最下面是**「修改消息名」**:

菜单项 作用
新消息 建一条新消息,并把这块积木指过去
修改消息名 给当前选中的这条消息改名

改名之后发送方和接收方的积木一起跟上——「广播 (开始)」和「当接收到 (开始)」指的是 同一条消息,改的是那条消息本身,不是某一块积木上的字。

改成另一条已有消息的名字不会生效:两条同名的消息在积木上完全分不出来。

消息没有「删除」:没有任何积木用到它时它自己就消失了,这是 Scratch 一直以来的规矩。

新建和改名用的是同一个对话框,穿的是事件那一类的黄色——里面那块积木就是将要出现在 「事件」里的那一块。

多场景下变量归谁#

  • 全局的:所有场景共用同一个,不是复制也不是同步。
  • 仅本场景:只属于建立它的那个场景。切到别的场景后,那个变量根本不存在,而不是 变成 0。
  • 积木栏里列出的是正在编辑的那个场景的变量,不是舞台当前在演的那个场景的。

更多见场景。

云变量#

这个编辑器无法新建云变量。 新建对话框里没有这一档,在这里建立的变量一律不是云变量。

作品里原有的云变量(从别的编辑器导入的那种)照常列在积木栏里。「数据管理」面板会把它们 单独标为「云变量」排在最前面,不过那个面板现在盖着一层写着「数据管理开发中,敬请期待」的 遮罩:底下的界面照常画出来,但点不动,见 Gandi 面板。

相关#