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:Loading、Title、Toolbar、Save、Load、Settings、History、Gallery、Input、Choice 和 Message。加载、输入、选项和消息框通常由运行流程传入专用参数;完整契约见系统插槽。 Toolbar 由默认游戏壳在对话期间自动调用。工具栏控制器使用 close() 收起实际打开的绑定;即使作者绑定加载失败并回退到了内置工具栏,也能关闭正确的界面。

案例:以模态方式打开设置

输入: 项目把设置插槽绑定到 avg.internal.default-shell/settings-screen。
import { INTERNAL_SYSTEM_SLOT } from "@avg-studio/sdk";

const binding = ctx.system.getBinding(INTERNAL_SYSTEM_SLOT.Settings);

await ctx.system.invoke(INTERNAL_SYSTEM_SLOT.Settings, undefined, {
  modal: true,
  containerOptions: {
    size: "(100%, 100%)",
    position: "(0, 0)",
  },
});

console.log(binding);
输出:
avg.internal.default-shell/settings-screen
设置界面以模态方式打开;invoke() 会等到该模态界面关闭后完成,解析值为 undefined。可选插槽没有绑定时,调用可能是安全的空操作。