代码文件
作品除了造型和声音,还能带一批文本文件:JavaScript、Python、JSON、GLSL。它们跟着作品
一起存进 .sb3,不属于任何一个角色。写扩展、放一张配置表、写一段着色器,用的都是这里。

这一篇说的不是积木页。工作区左边那棵树里的
main、战斗、UI是把一个角色的积木 分页存放,见积木页。
打开方式#
顶栏抽屉里的「文件编辑器」(顶栏那一排放不下的入口都收在「全部功能」里,见 顶栏)。资源面板里的文件条目右键也有「在文件编辑器中打开」。
第一次打开需要等待:编辑器内核是 Monaco(VS Code 用的那个),体积有好几兆,按需下载, 下载期间右边显示「正在加载编辑器…」。
五种文件#

| 类型 | 扩展名 | 一个作品能有几个 |
|---|---|---|
| JavaScript | .js |
不限 |
| Python | .py |
不限 |
| JSON | .json |
不限 |
| GLSL | .glsl |
不限 |
| 扩展 | .js,名字固定叫 extension |
最多一个 |
「扩展」只能有一个。这条限制从 2.0 沿袭而来:那边按名字识别扩展文件,有两个就无法确定该 加载哪一个。
新建、改名、删除#
- 新建:点「新建文件」,在菜单里挑类型,行里直接填名字,回车。名字不用带扩展名,
右边会显示它。新建完自动选中它,里面已经有一段起手模板(JSON 是一对花括号,GLSL 是一个
最小的片元着色器,扩展是一个带
getInfo和一块积木的类)。 - 改名:双击那一行。回车确定,
Esc放弃。 - 删除:点行尾的
×,会先确认。
名字有三条规则,不满足时列表下面会用红字提示:不能是空的;不能带 \ / : * ? " < > |
(这些文件将来要写进 .sb3 的目录结构,带斜杠的会落到别处);不能和同类型的文件重名。
不需要手动保存#
停止输入半秒就自动写回作品。 这些文件是作品的一部分,没有单独的「保存」操作,保存到 电脑时它们跟着作品一起走。切到另一个文件、关掉面板、打开别的作品之前,最后输入的内容也会 先写回,不会丢。
(不是每敲一个键就写回:写回作品要重算校验和并重新编码,边打字边写会让长文件变卡。)
语法高亮按类型区分,括号不匹配之类的问题当场标红。JavaScript / TypeScript 和 JSON 各配了 一个语言服务(补全、检查);GLSL 只有高亮,没有补全,作品里的着色器通常几十行,高亮 已经足够看出哪里写错了。
文件确实在作品里#
存一次作品,project.json 里就多一段 gandi.assets,每个文件一条,按内容的校验和命名;
压缩包里也会多出对应的 <校验和>.js / .py / .json 文件。换一台机器打开这个 .sb3,
文件原样都在。
文件列表里每一行右边的数字是它当前的大小(179 B、1.2 KB)。
这些文件在资源面板里也能看到,那是全作品素材的总表,造型、声音、文件都在一张表上, 见资源库。
「装进作品」目前不可用#
选中「扩展」类型的文件时,右上角会多一颗「装进作品」按钮,意思是把这个文件当扩展装到当前 作品里。
这条路目前是断的。 点下去会弹出「装不上:Extension not found: data:text/javascript,…」:
编辑器把文件内容包成一个 data: 地址交给运行时,而运行时只接受 http: / https: 的扩展
地址。要装自己写的扩展,眼下得把它挂到一个能访问的网址上,从扩展库里用地址安装,见
扩展。