ctx.system 通过语义化系统插槽打开界面。扩展只关心“打开设置”或“打开存档”,无需知道项目最终绑定了哪一个实现。

API

方法返回值说明
invoke(slotId, payload?, options?)Promise<void>调用指定系统插槽
close(slotId)Promise<void>关闭此前通过该插槽实际打开的界面
getBinding(slotId)string | undefined获取插槽当前绑定的 UI 路径
listSlots()SystemSlotInfo[]列出全部系统插槽及其绑定信息
invoke()options 支持 modalcontainerOptions;后者与 ctx.ui.show() 一样支持尺寸、位置和交互性。

可用插槽

使用 SDK 导出的 INTERNAL_SYSTEM_SLOTTitleToolbarSaveLoadSettingsHistoryGalleryInputChoice 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。可选插槽没有绑定时,调用可能是安全的空操作。