这里不按 API 名称罗列零散代码,而是从一个个可以放进作品的功能出发。每个范例先说明玩家最终会看到什么,再拆解它自然用到的 SDK 能力。 范例代码默认写在程序扩展的 src/index.tsx 中。还没有程序入口时,先在扩展树中选中「程序」,点击「初始化程序」。第一次开发扩展建议先完成 Hello World

按想做的功能选择

界面反馈与玩家操作

常驻工具栏、任务 HUD、成就通知、可视化任务面板

玩法数据与成长系统

好感度、背包、解锁作用域、提示次数

剧情流程与演出控制

一键转场、支线调用、回忆跳转、角色对话配色

系统界面与玩家设备

标题画面、快存快读、存档截图、全屏与音量

收藏、图鉴与媒体

人物图鉴、CG 鉴赏、音乐室、语音历史、剧本统计

案例与 SDK 能力

范例最终效果自然覆盖的能力
跟随对话显隐的工具栏对话出现时显示,离开对话时收起onRegister、事件、设置、ctx.ui
当前任务 HUD剧本更新任务,画面角落实时显示method()saveSchema、变量 Hook
成就解锁通知新成就出现时弹出短暂提示shared 存档、变量 Hook、React 状态
可视化任务面板布局在编辑器中制作,代码注入动态内容ctx.visualUI、元素引用、清理
好感度里程碑达到阈值后只记录一次里程碑方法、角色参数、设置、slot 存档
可增减的背包发放、消耗物品并保持数据不可变更新多方法、列表存档、文本候选
可切换的解锁范围作者决定解锁跟随存档还是跨周目设置、slot/shared 双作用域
调查提示次数作者配置上限,玩家消耗次数设置与存档的职责边界
一键完成转场演出黑场、换景、立绘、音乐、镜头连续执行幕布、场景、角色、声音、镜头
可返回的支线剧情支线结束后回到原剧本继续播放ctx.flow.callFragment
回忆录跳转放弃当前流程并从已解锁片段重放unsafe_goToFragment、shared 存档
角色专属名字颜色每句对话按角色代表色改变名字牌ctx.dialogue.useStyle、角色数据
自定义标题画面替换标题并调用读档、设置等入口系统插槽、ctx.systemctx.game
可改键的快存快读F5/F9 默认,玩家可以重新映射语义动作、ctx.archive
打开存档页前截图缩略图不被存档界面本身遮挡onInitonClose、截图缓存
玩家控制中心调整音量、跳过策略和全屏ctx.configctx.game.window
人物图鉴已遇见角色显示档案,其他角色显示剪影ctx.character、shared 存档
CG 鉴赏预览在弹窗中渲染收藏场景,不改变主舞台ctx.sceneRender、资源图层、清理
音乐室解锁曲目并在界面中试听素材参数、ctx.assetctx.sound
可重放语音的历史页展示已播放台词并重放语音ctx.history、响应式快照
全剧本台词统计按章节统计项目中的全部对话ctx.story、异步按需加载
先找和目标最接近的范例,再沿着案例旁的能力链接深入。不要为了“用全 SDK”把无关能力塞进一个扩展;真正的扩展通常只组合其中三到五项。

阅读约定

  • 每个范例的代码只保留核心组合,通用样式和错误提示会适当省略。
  • 示例中的 manifest.id 来自扩展根目录的 extension.json,不要把随机生成的完整扩展 id 写死。
  • 存档列表按只读数据处理,使用新数组整体 set,不要原地 pushsplice
  • React 组件中使用 Hook;注册阶段和剧本方法中使用命令式 API。
  • API 类型以当前扩展目录中的 sdk/ 为准。Studio 版本较旧时,部分新范例可能需要提高 sdkVersion