纯界面扩展
新建扩展的初始结构:ui/ 下每个 JSON 文件是一份可视化界面。文件名由 Studio 管理,界面显示名称可以在编辑器中修改。
纯界面扩展的 extension.json 不声明 entry。Studio 因此不会尝试加载程序 bundle。
初始化程序后
点击「初始化程序」会在现有目录中追加:src/:TypeScript / React 源码;sdk/:@avg-studio/sdk的本地副本;dist/index.js:Studio 和玩家端实际加载的程序;ui/:仍由可视化编辑器管理,可以通过ctx.visualUI和程序协作。
extension.json
纯界面扩展的清单示例:字段
| 字段 | 必填 | 说明 |
|---|---|---|
id | 是 | 全局唯一标识,长度 2~128;Studio 会生成合法值 |
name | 是 | Studio 中显示的扩展名称 |
version | 是 | 语义化版本号 |
sdkVersion | 是 | 需要的最低 SDK 版本,见下方说明 |
author | 否 | 作者标识,可以为空 |
description | 否 | 简介 |
entry | 程序扩展是 | 程序 bundle 相对路径;存在即表示扩展带程序 |
icon | 否 | 图标相对路径 |
propsSchema | 否 | 程序 UI 接受的 props 定义 |
overrides | 否 | 接管 DialogueBox、Choice 或 InputBox |
permissions / network | 否 | 权限和网络能力声明 |
sdkVersion 的版本校验
v1.9.0 起:SDK 版本号与 Studio 版本号保持一致,版本校验精确到次版本和补丁号(此前只比较主版本)。
sdkVersion 声明「这个扩展至少需要哪个版本的引擎」:
>=1.8.0、^1.8、1.8三种写法等价,语义统一为「至少需要 1.8.0」。- 主版本必须与当前引擎相同;同主版本内,声明的版本不高于当前引擎即可加载。
- 声明高于当前引擎版本的扩展会被跳过加载,并给出明确提示;扩展工坊中不兼容的扩展会置灰并显示「需要 SDK x.x.x」。
sdkVersion 提到那个版本(例如使用 ctx.dialogue.useStyle 需要声明 >=1.9.0);只用基础 API 时保持较低的声明,让老版本引擎的用户也能安装。Studio 新建扩展时会自动填入当前 SDK 版本。
hasProgram 是 Studio 校验清单后生成的内部状态,不需要手写。原始清单是否声明 entry,决定扩展有没有程序。程序入口
src/index.tsx 导出一个或多个 Extension 子类。也可以从 extension.json 导出清单对象:
Extension 的模块。
构建命令
react、react-dom 和 SDK 由宿主提供单实例,模板会配置好 Vite 和类型依赖。