NarraLeaf

安装插件

从商店或文件夹安装插件、批准其权限,并启用、禁用、更新或移除它

插件在启动器的 Plugins 里管理,那里有两个列表:InstalledStore。你可以从商店安装,也可以从磁盘上的任意文件夹安装

启动器的插件页停在已安装列表上,内置插件已标出

从商店安装

商店列出的是某个注册表索引里的插件。默认是官方的 NarraLeaf/Plugins 索引——一个经过策展的仓库,收录前会审查插件的行为和权限,而不只是看它能不能构建。想指向别处,改设置里的 Registry URL;留空即使用官方索引

商店列表:一个插件可以安装,已装好的插件标为已安装

Install 会下载发布包、完成安装,并直接进入权限提示。如果插件声明的 Studio 版本范围不包含你这个构建,按钮会被隐去、行上写明它需要哪个版本,而不是让安装到后面才失败

如果 Studio 连不上注册表,Store 列表会如实说明并提供重试。其他一切不受影响——Installed 列表和已经装好的插件在离线时照常工作

从文件夹安装

插件就是一个包含 manifest.json 和构建出的入口文件的文件夹。任何这样的文件夹都能安装,无论它来自发布 zip,还是直接来自你自己的 dist/

获取插件

下载插件的发布包(一个 .zip)并解压。你应当得到一个在顶层包含 manifest.json 的文件夹:

hello-1.0.0/
  manifest.json
  main.js
  runtime.js

从文件夹安装

Plugins 里选择 Install from folder,选中那个文件夹。Studio 会校验清单,并把插件复制到它自己的存储中

批准权限

Studio 会弹出提示,逐项列出插件请求的内容。审查后批准或拒绝。什么都不请求的插件会直接安装,不弹出提示

提示里都列了什么

这份提示不是插件作者写的一段自述——它的大部分内容是根据插件的声明计算出来的,因此不可能少报插件的能力

条目来自
对某个路径的文件系统访问作者写下的 filesystem 权限。仅影响编辑器
bash.execute 之类的 API 能力作者写下的 api 权限。仅编辑器
游戏侧能力——存储、故事变量、存档、屏幕上的覆盖层、打包资源、游戏语言插件在 contributes.runtimeCapabilities 中声明的每一项
会被打包进你所构建游戏的原生程序每个已声明的 sidecar,附带它提供二进制的平台,以及它的指纹
构建时会下载的二进制每个已声明的构建时依赖,附带它下载的主机名

后三类是派生出来的:Studio 从 contributes 计算它们,并拒绝任何试图手写它们的清单。这正是让「提示所说」无法偏离「插件实际能触及的东西」的机制——一项能力只在一处声明,而插件的 API 面就是照着同一份声明构造的。未声明的能力不只是没被提示,它根本不在插件的 API 对象上

批准前有两条值得再看一眼:

  • 覆盖存档。saves.write 的插件能覆盖存档槽并读取存档,而读取会替换当前进度。快速存档类插件确实需要它,大多数插件不需要
  • 随游戏附带的原生程序。 这是会随你发行的游戏抵达玩家机器的代码。Studio 在安装时以及打包时都会校验它的指纹,篡改过的包会安装失败而不是悄悄发行——但要不要带上它,由你决定

拒绝之后,插件仍然装着,但没有获得授权。它会保持禁用,列表把它标为 Needs authorization;点 Authorize 可以再次调出提示

插件不在沙箱中运行。一旦安装并启用,插件就拥有与 Studio 相同的访问权限,其游戏侧代码会运行在你玩家的机器上。只从你信任的来源安装插件,并在批准前阅读权限提示

更新

只要商店索引里有更新的版本,Installed 列表就会把该插件标为 Update available——不管你当初是不是从商店装的。更新会下载该版本并就地安装。你这个 Studio 构建吃不下的更新仍然会被告知,但只作为一条事实,而不是一个按钮

授权按插件版本记录,并连同你实际批准的那份权限集一起保存。请求不超过你已批准范围的新版本会继承该授权。增加了能力的版本会让派生权限集变宽,Studio 因此会重新提示,并展示变化了什么

插件的主版本号是它与使用它的项目之间的兼容性契约。跨主版本更新,会让按旧主版本创作的项目把它判为不兼容并跳过它——参见项目依赖

启用、禁用与卸载

  • 启用 / 禁用——被禁用的插件仍保持已安装状态,但不会加载。它的编辑器贡献项和游戏侧代码都会停止。切换会在下一次工作区或游戏加载时生效
  • 卸载——删除插件的文件

提供语言包的插件在启用时会把它的语言加入设置 → 语言;禁用或卸载它会移除这些语言。如果它提供的正是你当前使用的语言,Studio 会回退到英文;重新启用该插件后,你的选择会恢复

出问题时

如果插件的清单无效、入口文件缺失,或在加载时抛出错误,Studio 会在插件列表中把它标记为错误状态,并在那里显示相应信息。加载失败的插件绝不会阻止 Studio 启动,一个损坏的插件也不会影响其他插件

如果项目用到的某个蓝图节点或控件没有可用的提供方——插件缺失、被禁用,或某个版本不再声明它——预览和导出会失败,并给出一条指明该插件和类型的诊断信息,而不是发布一个带有无效节点的游戏

还有一种情况:某个插件只在一个项目里被跳过,在别处一切正常。那是版本不兼容,依赖面板会指名道姓。参见项目依赖

本页目录