ctx.system 通过语义化系统插槽打开界面。扩展只关心“打开设置”或“打开存档”,无需知道项目最终绑定了哪一个实现。
API
| 方法 | 返回值 | 说明 |
|---|---|---|
invoke(slotId, payload?, options?) | Promise<void> | 调用指定系统插槽 |
close(slotId) | Promise<void> | 关闭此前通过该插槽实际打开的界面 |
getBinding(slotId) | string | undefined | 获取插槽当前绑定的 UI 路径 |
listSlots() | SystemSlotInfo[] | 列出全部系统插槽及其绑定信息 |
invoke() 的 options 支持 modal 和 containerOptions;后者与 ctx.ui.show() 一样支持尺寸、位置和交互性。
可用插槽
使用 SDK 导出的INTERNAL_SYSTEM_SLOT:Title、Toolbar、Save、Load、Settings、History、Gallery、Input 和 Choice。
Toolbar 由默认游戏壳在对话期间自动调用。工具栏控制器使用 close() 收起实际打开的绑定;即使作者绑定加载失败并回退到了内置工具栏,也能关闭正确的界面。
案例:以模态方式打开设置
输入: 项目把设置插槽绑定到avg.internal.default-shell/settings-screen。
invoke() 会等到该模态界面关闭后完成,解析值为 undefined。可选插槽没有绑定时,调用可能是安全的空操作。