Gandi 3.0文档
官网 打开编辑器
文档/舞台与运行

舞台

舞台是作品运行的地方:画面、绿旗和「询问并等待」的输入框都在这里。它是一个普通面板, 可以停靠,也可以浮动,默认浮在编辑器组的右上角。

舞台浮窗:标题栏、控制条、画面

打开方式#

顶栏那一排里的「舞台」。它和别的面板一样是开关:高亮表示已显示,再点一下收起。

控制条#

绿旗、暂停、停止、鼠标坐标,右边是加速 / 编译 / 全屏

左边三颗按钮在作品没有运行时是半透明的,运行后变成实色,用来表示当前是否有脚本在执行。

按钮 作用
绿旗 运行。默认先切回入口场景(作品的第一幕)再开始
绿旗 + Shift 从当前场景开始,不切回入口;调试第三关时不必每次从主菜单玩过去
暂停 把作品停在原地。暂停之后这颗按钮换成播放箭头,再点一下继续。作品没有运行时点它无效
停止 全部停止

右边三颗:

按钮 作用
闪电 加速模式:不再等待屏幕刷新
</> 编译模式:把脚本编译成 JavaScript 再运行
四角箭头 全屏

前两颗和设置里「高级」那两行是同一对开关,在任一处修改,另一处同步显示,见 运行时的保护与开关。

鼠标坐标#

设置 →「鼠标位置」打开之后,停止键右边多出一对数字,是指针当前在舞台坐标里的位置 (原点在舞台中心,向右向上为正)。它是读数,每 0.1 秒取一次,四舍五入到整数。

提问框#

作品执行到「询问并等待」时,输入框贴在舞台底部;问句由角色以对话气泡显示。

「询问并等待」:气泡里是问题,底下是输入框

回车或者点右边那颗圆按钮提交答案。在框里输入不会传给作品,键盘事件被拦在这里,否则 回答的同时会把角色操作起来。问句为空(「询问 [] 并等待」)时只出现输入框,没有气泡, 与原版一致。

全屏#

全屏是在页面内部铺满窗口,不是调用浏览器的全屏。按 Esc 或者再点一次那颗按钮退出; 控制条照常显示,因为退出按钮就在上面。控制条铺满窗口宽,按钮和画面左右对齐;控制条和画面 四周的底色跟着当前主题。

全屏时键盘全部交给作品。点过控制条上的按钮之后,数字、空格、方向键、字母照样传给作品, 按钮不会留着焦点,回车和空格也不会再按它一次。

页内全屏:控制条在最上面一条,舞台铺满剩下的地方

画面本身和平时一样清晰:舞台始终按实际显示的像素绘制(高分屏再乘上设备像素比), 面板多大画布就画多大,放大、最大化、全屏都不是把 480 格的画面拉大。在 1920 × 1200 的窗口里 实测:全屏后画布绘制为 1537 × 1153 CSS 像素,高分屏下的缓冲是它的两倍。

在舞台上拖角色#

编辑器里任何角色都能在舞台上直接拖动摆位:角色被拎起来跟着鼠标走,松手才落到新位置。

全屏时只有作品自身标记为可拖动的角色才能拖(「将拖动模式设为可拖动」),而且是角色本身 跟着鼠标走,作品在拖的过程中就读得到它的坐标 —— 和发布之后玩家看到的一样。

不想在编辑器里误拖角色,就在设置里关掉「编辑器里拖动任意角色」:编辑器里也按全屏的规则来, 只有可拖动的角色能拖,按什么键都不例外(很多游戏按住 Shift 奔跑)。要摆位时把设置打开。

编辑器里作品停着时,双击舞台上的角色会在角色列表里选中它(点到克隆体选中它的本体)。全屏时、 作品在跑的时候双击不做这件事 —— 点击是作品的输入,连点射击时不会把编辑器切来切去。

舞台有多大#

「舞台有多大」说的是格数,不是屏幕上的像素。4:3 是 480 × 360,16:9 是 640 × 360。

设置 · 舞台比例与尺寸模式

两张比例卡片只是快捷方式,点一下把下面的尺寸填成对应的数值;其它尺寸直接在「尺寸」里填 (16 到 4096)。完整的设置项见设置。

四种尺寸模式#

同一个面板下三种模式各算出多大的舞台
  • 固定 —— 舞台保持该尺寸,面板多大都不变,多出的区域留空。
  • 跟随面板 / 横向扩展 —— 高度锁定在基准尺寸的高,宽度按面板的宽高比铺开。
  • 纵向扩展 —— 宽度锁定在基准尺寸的宽,高度按面板的宽高比计算。

「跟随面板」和「横向扩展」算出的舞台尺寸相同。 上图那组数据是在同一个 501 × 327 的面板 里测得的:两者都得到 552 × 360。设置里它们是两项,实际用的是同一个公式。

三种动态模式改变的都是「舞台有多少格」,不是「一格有多大」:同一个角色在任何面板尺寸下 看起来都一样大,变化的是可见范围。

屏幕比例跟着作品走#

一个作品是按某个舞台尺寸制作的,换一个形状就会走样。所以打开作品时舞台以作品为准,而不是 以上一次的设置为准:

  • 3.0 导出的 .sb3 里记录着舞台尺寸(480 × 360 以外的都记录)。把一个 16:9 的作品保存 下来,把设置改回 4:3,再打开那个文件:舞台回到 640 × 360,设置里的比例卡片也跟着回到 16:9。
  • 作品没有记录自身尺寸时(Gandi 2.0 的作品就不记录,它把比例存在平台的作品信息里而不是 sb3 里),按作品的内容推断:取全部背景造型宽高比的中位数,不小于 1.55 算 16:9,不大于 1.42 算 4:3。一个 2.0 的 16:9 作品打开之后舞台直接是 640 × 360,设置里的比例卡片也跟着 翻到 16:9,不需要手工改。

中位数落在 1.42 和 1.55 之间(例如 3:2 的背景),或者作品没有可用的背景(空白背景,以及 全部背景都小于 200 × 100 的缩略小图)时,改看角色的初始位置:至少两个角色的 x 坐标绝对值 在 250 到 340 之间就算 16:9,那是 4:3 舞台放不下的位置。角色也看不出来时分两种情况:

  • 有背景,只是比例拿不准:舞台保持当前设置。
  • 没有可用的背景:一律按 4:3。一个用空白背景做的 16:9 作品会因此被改成 4:3。
16:9 的舞台放在一个偏方的面板里,上下留空

固定模式下作品修改了舞台尺寸,设置里的比例按钮跟着变化;动态模式下不回写,因为那时尺寸是 按面板计算出来的,写回去等于连基准一起改掉。

舞台在浮窗里的三种样子#

默认布局里舞台是一扇浮窗,压在编辑器组的右上角。那一角对着工作区时是空白区域,对着造型 编辑器时正好挡住画布,因此浮窗记住自己贴在哪一组,显示方式由那一组的当前页签决定:

那一组正开着 舞台窗
工作区、角色、积木栏、场景 普通窗口
造型、装配 缩成 288 像素宽的小预览,贴在那一组右下角,只有画面没有按钮
声音、资源、文件编辑器、终端 不显示,标签条右端留一枚「舞台」胶囊
切到造型页签,舞台缩成右下角的小预览
切到声音页签,舞台收起来,标签条右端留一枚胶囊

点一下胶囊把舞台变回普通窗口,并且记住这个选择:以后这一组切到声音页签时它就是普通 窗口。手动移动过、缩小过、收起过的状态,都按页签种类分别记录。这套规则只适用于舞台,别的 浮窗始终是普通窗口。全屏时无论外面是哪种形态,都照常显示那排按钮。

浮窗、贴边、最大化的更多说明见面板与布局。

别的几件事#

  • 画布跟着面板的像素走。 拖分隔条、拖窗口边这种连续变化时,画布最多每 150 毫秒重建一次, 中间那几帧先用 CSS 拉着;一条边最多 8192 像素。比一张纹理放得下(800 万像素)还大的造型 —— 好几个舞台宽的地图、放大 8 倍的背景 —— 按 512 像素的块绘制,只画画面里看得见的那些块 (相机扩展把画面挪走、放大之后也一样), 放到多大都清晰;新的一块画好之前先用粗一级的块顶着,一两帧内补齐。
  • 变量监视器绘制在画布之上,跟随舞台一起缩放;提问框在最上层,扩展加到舞台上的覆盖层 在监视器下方,互不遮挡。
  • 从资源面板往舞台上拖一张图即在落点新建一个角色;一次拖多张则新建多个角色,位置各自 错开,避免重叠。见资源库。
  • 在编辑器里点场景卡片切换场景时舞台会做一次交叉淡入淡出(先把旧画面抓成一张图覆盖,等 新场景画出第一帧再淡出);脚本里切换场景不做过渡,那由作品自身控制节奏。见 场景。

画中画#

控制条上那颗画中画按钮,把舞台搬进一扇独立的浏览器小窗。那扇窗始终置顶, 可以拖到屏幕任何地方 —— 包括副屏。边写代码边看作品跑,或者演示的时候把舞台单独 拎出来,都不用再挤网页的地方。

窗口里也有那排控制按钮——绿旗、暂停、停止、加速、编译、帧率,和网页里那排是同一个。

没有全屏和鼠标坐标:浏览器不允许画中画窗口全屏(那边 document.fullscreenEnabled 就是 false),点了只会什么都不发生;鼠标坐标那个读数跟的是网页那边的指针,在这扇窗里 永远不动。要更大就拉这扇窗。

小窗按舞台的比例打开,画面正好铺满控制条下面那块;宽度第一次照舞台在网页里的宽度,之后照 上次拉到的宽度。拉伸小窗时画面跟着缩放,比例对不上的那个方向留边;舞台尺寸设成跟随面板的, 舞台按小窗的形状重新算格数。网页这边怎么拖面板、改布局,都不影响小窗里的画面。键盘、鼠标 位置、「按下鼠标?」和「碰到鼠标指针?」照常控制作品。

画中画里拖角色和网页里一样:编辑器里任何角色都能拖;关掉「编辑器里拖动任意角色」后只有 可拖动的角色能拖。规则见在舞台上拖角色。

网页这边分两种:

  • 舞台原来是浮窗的:进画中画时把浮窗关掉,退出时按原来的位置和大小还原;画中画开着时刷新页面,浮窗也会回来。
  • 舞台停靠在布局里的:那一格留着,里面写「舞台在画中画里」,点一下就能收回来。 这块面板随时可以关掉,不影响画中画;退出时它会自己回来。

只有 Chromium 系的浏览器(Chrome、Edge)有这个能力,别的浏览器里这颗按钮不出现。

相关#