Gandi 3.0文档
官网 打开编辑器
文档/角色与场景

多场景

一个作品可以分成多个场景。每个场景是一个完整的小作品,有自己的舞台、角色、脚本、造型、 声音和变量:菜单一个场景,第一关一个场景,Boss 战一个场景,不必再让每个角色自己判断 本关该不该出现。

场景面板

最上面一行是作品当前的运行概览,下面是场景卡片。图中「主场景」在前台运行,「第二关」在 后台在场,「结算画面」已经卸载。

老作品没有场景的概念,打开之后就是一个场景,名字叫「主场景」。建立第二个场景后,编辑器 会自动装上「场景」扩展,积木栏底下多出一类:

积木栏里的场景分类

这一类里积木栏能看见 39 块(扩展一共 46 个积木,其中 7 块是被取代的老积木,已经隐藏, 老作品里照样能运行)。多场景作品里这个扩展不能卸载:扩展库里它的按钮不会变成「卸载」, 鼠标停上去写着「有多个场景时不能卸载」。

打开方式#

顶栏作品名旁边那枚胶囊写着当前正在编辑哪个场景,点开是一份可直接切换的清单:

顶栏的场景胶囊

✓ 标的是正在编辑的那个;右边的小字写「入口」或者「舞台在演」。作品运行时胶囊上会多 一句「· 运行中」。

清单最下面两项:「新建场景」新建一个场景并切换过去,「管理场景…」打开场景面板。场景面板是 一扇悬浮窗,可以拖动和改变大小,关闭后仍记住位置;积木栏「场景」分类里那颗「管理场景…」 按钮打开的是同一扇窗。

三档状态#

多场景里最重要的一点:「在画面上」和「在运行」是两件独立的事。

场景的三档状态

界面上的六种状态,由这三档加上暂停和线程数推出:

说法 什么时候
未加载 已卸载,只剩一份快照
加载中 正在装回内存,耗时数秒起
休眠 在内存里,但没有线程、不在舞台上
已暂停 在场,已暂停
运行中 在场,当前有线程在运行
就绪 在场,但一条线程也没有

卡片左上角那颗点表示的就是这个状态,鼠标停上去还会补一句线程数。「运行中」只在确实有线程 时才显示,线程数每一帧都在变化。

卡片上都有什么#

卡片和它的小键
  • 缩略图:离开这个场景之前抓取的最后一帧;一次都没抓到时显示名字的第一个字。已卸载的 场景仍沿用最后那一张。
  • ⚑ 入口:绿旗从这个场景开始。
  • 角标:「运行中」「已暂停」「已卸载」,其余状态由那颗点表示。
  • 身份牌:「编辑中」「舞台」,两个身份都在同一张卡片上时合成一枚「编辑中 · 舞台」。
  • 名字下面是「N 个角色」,跨场景角色单独算一句「+N 跨场景」,运行时再加一句 「N 条线程」。
  • 右下角一排小键(悬停才浮出来):当前可用的那几个动作。只有「卸载」始终显示,它不可 点击时鼠标停上去会说明原因。
  • 右上角的 ×:删除这个场景。只剩一个场景时不显示。

点一张卡片即切换到那个场景,舞台和编辑器一起切过去。拖动卡片可以排序。

运行、暂停、卸载#

卡片上的小键和右键菜单里的「运行 ›」是同一份名单,区别在于菜单会保留当前不可用的项 并置灰:

场景卡片的右键菜单
动作 意思
运行(后台) 让它在场上运行,画面仍是前台那个场景
暂停 / 继续 暂停等于静音,不是挂起;恢复不续播
停止 线程、克隆体、声音、气泡全部清除;非前台场景一并收回休眠
卸载 释放它的纹理、解码后的音频和积木图
加载 把已卸载的场景装回内存,耗时数秒起,期间按钮转圈

「卸载」不可点击的四种原因,鼠标停上去会写出来:前台场景不能卸载,先切到别的场景 / 正在编辑它,先去别的场景编辑 / 入口场景不能卸载 / 此版本暂不支持。

面板顶上那行「正在运行 N · 线程 M · 已卸载 K」是整个作品的概览,右边的「卸载闲置场景」 一次卸掉所有闲置场景(休眠、不是前台、不是入口、没有任何线程)。

卸载省下的不是存盘的字节。 作品保存时,已卸载的场景连同它的资源一个都不会少;省下的 是内存里的纹理、解码后的音频和积木图。

后台运行的场景有几条明确的限制:不绘制画笔、不显示监视器、默认不接收键盘;所有在场的 场景共用同一份每帧预算,同时运行多个场景会互相拖慢。跨场景角色是全局单例,不受单个场景的 运行控制,暂停、停止、卸载任何场景都不影响它。

舞台画面与编辑目标是两回事#

作品运行后,积木一秒可以切换多次场景。编辑器若跟着切换,就无法继续编辑。所以这是 两个独立的概念:

谁能改变它
前台(舞台画面、运行中的脚本、监视器) 积木、绿旗、停止、手动切换、「显示到舞台」
编辑(角色列表、工作区、积木栏、造型 / 声音面板、顶栏胶囊) 只有编辑器里的手动操作

右键菜单前四项正是按这个划分的:

菜单项 影响哪一边
切换到此场景 两边一起切换
在此编辑 只改变编辑器,舞台不动
显示到舞台 只切换舞台画面,不重新启动它,也不改变编辑器(要求那个场景已经在场上)
从此场景开始运行 先停止,切换过去,然后从这里开始运行

休眠的场景同样可以编辑,编辑不要求它在场上。

两边不一致时,界面只提示一次、只给一条路径:卡片上那枚「编辑中 · 舞台」身份牌;顶栏胶囊 后面多出来的一枚「舞台:X」;角色面板左下角一条「舞台正在演「X」· 跟过去」;场景面板顶上 那行也会多一颗「舞台:X」。

顶栏的舞台提示

点它可以把编辑器对齐到舞台正在演的那个场景。两边一致时,这几处不占任何位置。

积木栏里列出的变量是编辑场景的那一份,不是舞台在演的那个场景的;否则会在 A 场景里看到 B 场景的变量,还能用它拼积木。

正在编辑的角色不在这个场景里#

切换编辑场景时,角色的面板不关闭:布局树、分组、浮窗位置全都不变。这段时间面板里显示 一句说明和一个返回按钮:

休眠角色的面板占位

按钮只把编辑器切过去,不改变舞台,因为作品可能正在运行别的场景。场景已被卸载时,文案 会标一句「(已卸载)」,按钮换成「加载并编辑」,装回内存需要几秒,期间转圈且不可点击。

增删改#

做什么 怎么做
新建 面板里那张「新建场景」卡片,或顶栏胶囊里的「新建场景」。名字按「场景2」「场景3」依次编号
改名 右键「重命名」,或者选中卡片按 F2
创建副本 右键「创建副本」,建完切到副本
排序 拖卡片,或右键「移动 › 前移 / 后移」,或 Alt + 方向键
设为入口 右键「设为入口场景」
删除 卡片右上角的 ×、右键「删除」,或选中卡片按 Delete

删除前会先确认一次(说明它有几个角色,并写明这一步不能撤销),而且至少要保留一个场景。

场景的增删和复制没有撤销:它们改的是作品的结构,不在积木的撤销栈里。为了不让 Ctrl + Z 顺手撤掉别的东西,做完这类动作之后第一次按 Ctrl + Z 什么都不撤,只提示一句「删除场景 「第二关」不能撤销,再按一次撤销更早的编辑」;再按一次就照常往下撤。中间又改过积木的话, Ctrl + Z 先撤那次改动,撤到这一步时才会看到提示。修改变量作用域也是这样。

导入和导出#

右键「导出为 .sb3」把一个场景整个存成文件。导出的是一个标准 sb3:这个场景的舞台就是作品 舞台,所以它既能再导回来,也能直接在 Scratch 里打开,一个场景本身就是一个小作品。 跨场景角色不在里面,它们属于整个作品,一起导出会在对方那里变成多余的副本。

导入有两条路:

  • 面板里那张「导入场景」卡片:新建一个场景并装入,名字取文件名;
  • 右键「用文件替换…」:替换这个场景的内容,名字、顺序、入口身份都保留。

绿旗从哪儿开始#

绿旗先切到入口场景再运行。按住 Shift 点绿旗即「从当前场景开始」,不切回入口 (按钮的提示写着「运行(Shift:从当前场景开始)」)。

变量和广播#

全局变量、列表、广播跨场景共享,不是复制,也不是同步,而是同一份数据。建变量时选 「仅本场景」的那种是真正私有的:切到别的场景,那个变量根本不存在,而不是变成 0。

建立之后还能修改:积木栏里右键那块变量,「修改变量作用域…」可在全局 / 仅本场景 / 仅本角色 三档之间切换,见变量和列表。

角色属于哪个场景#

一个角色可以只属于一个场景,可以有一份场景名单,也可以是跨场景角色(每个场景都在, 全局只有一份实例)。这些都在角色栏里操作,见 角色栏。

已知的边界#

  • 旧编辑器只看得到入口场景,在旧编辑器里保存会丢掉其它场景。多场景作品点「保存到电脑」 时会先问一句,把入口场景和会丢掉的那几个点名写出来;场景面板顶上也常驻一行同样的说明。 只想把一个场景交出去的话,用卡片右键的「导出为 .sb3」。
  • 播放器模式从入口场景开始,不记录「上次停在哪个场景」。
  • 切换场景会重建工作区和积木栏,脚本里高频切换会拖慢编辑器。
  • 切换时画笔层会清空、气泡消失;music / text2speech 自行管理的声音不会停止。
  • 回到一个场景时,条件为真的边沿触发帽子积木会立即触发一次。

相关#