Gandi · 场景

一个作品好几个世界

菜单、第一关、Boss 战、结算——各是一个独立的世界,有自己的角色、脚本和变量。 想切就切,也可以让它们同时活着。

切走即收干净 可并行运行 可按需卸载
向下滚动
我的作品
我的游戏 开始游戏 继续
★ 3 1-2
本关完成 得分 1 240 下一关 ▸
今天的做法

一个作品,
一张舞台。

刚开始很好——三个角色,几段脚本,一切都在眼前。

关卡多起来之后,
它们都还在这儿。

第二关、第三关的角色并没有走,只是被藏起来了。角色列表越滚越长。

9个角色在场上
只有 3 个该出现

于是每个角色
都要判断自己。

「我这一关该不该出现」——藏起来的每一个都得写一遍。退回上一关,还得把状态一个个复位。

6段只为躲避而写的判断
再加一关,就再多一轮
今天的一个作品
换个想法

不要一张舞台。

既然它们本来就不属于同一个地方,那就别硬塞在一起。

一个作品,
几个场景。

每个场景是一整套:它自己的角色、自己的脚本、自己的变量。角色各回各家。

切走的那个,
会被收干净。

脚本、克隆体、声音一起停。所以你不用写复位代码——没有需要复位的东西留下。

0行复位代码
一个作品
最不一样的地方

先看一条
时间轴。

横着的这条就是时间,亮起来的那一段表示这个场景活着。现在两边一样:第一关在跑。

切换,
是把上一个停掉

看上面那条:第一关在分界线上断了。下面这条没有——「在后台运行」让它继续跑着。

画面上是哪个,
和谁在跑,是两件事。

两边画面最后都在第二关,可下面那个作品里,第一关一直没停过——它可以一边算着,前台先放过场动画。

同一段时间轴,两种做法
互不打扰,但要能说话

各过各的,
不等于老死不相往来。

普通的广播只在自己场景里响——这正是你要的,不然一个「开门」会把三关的门全打开。

要跨过去,
指名道姓

「向场景 X 广播」只送给那一个;「向所有场景广播」谁都收得到。那边用普通的「当接收到」接住就行。

对方还睡着?
消息会等它。

送给休眠场景的广播不会丢,排在那儿,等它下次开始时一起送到。

两个场景之间
.sb3

一个场景就是一个小作品,可以整个导出成 sb3 文件带走。别人拿到就能导进自己的作品里,也能直接丢进 Scratch 打开。

39

场景积木一共这么多。最常用的七块直接铺在积木栏最上面,其余分五组默认折起,需要哪一组点开哪一组。

1 份

跨场景角色只有一份。位置、造型、它自己的变量切场景时不会被重置——因为它压根没被重建。同名角色也不打架:后台场景问「Player 的 x 坐标」,读到的是它自己那个。

还带来了这些

场景不只是「分开放」

拆开之后,一些原本很别扭的事情变得理所当然。

关卡 = 2 难度 = 困难

值跟着切换一起过去

「进第几关」不用再靠全局变量传。写在切换那块积木上,那边的 hat 用具名椭圆接住,椭圆拖出来就是值。

玩家不用每关重造

把角色标成跨场景,它就一路跟着走。可以是所有场景,也可以只勾其中几个。

变量可以只属于一个场景

「仅本场景」是真的私有:切到别的场景,那个变量根本不存在——不是变成 0。

用不到的场景可以卸掉

内容退回一份快照,纹理和解码后的音频全部放掉,要用时再装回来。存盘一个字节都不会丢。

积木

一进分类,
第一眼就看得见

下面这三十九块就是全部,真实渲染——和编辑器里是同一套。

一进来就看得见
积木加载中…
参数 · 通信
积木加载中…
同时运行
积木加载中…
装卸 · 清单
积木加载中…
带得走

一个场景,
就是一个小作品

所以它可以整个导出成 .sb3。做好的一关能给别人;别人做的一关也能拿进来, 当成新场景,或者直接顶掉现在这一关。

导出 右键场景 › 导出为 .sb3 这个场景的舞台就是作品舞台,它的角色就是作品角色。丢进 Scratch 也能打开。
一个文件 关卡三.sb3 造型、声音、脚本、这个场景自己的变量,全在里面。
导入 新建一个场景 面板上的「导入场景」。同名的全局变量会自动并到一起,和导入角色一个规矩。
或者 替换掉某个场景 右键那个场景 ›「用文件替换…」。名字、顺序、是不是入口场景都留着,换的只是里面的东西。
开始用

三步就能做出多关卡

一开始只用最上面那七块积木就够了。

01建场景场景面板里新建、改名、排序。第一个场景就是绿旗启动的那个。
02放角色各关的角色放进各自的场景。要一路跟着走的,右键设成跨场景。
03连起来用「当场景开始」接住入口,用「切换到场景」走下一关。

代码里切场景不会打断你——你正在编辑的那个场景不会被拽走,作品在跑也照样改积木。