Skip to Content
Welcome to Vyno! 🍷

Game.use()

获取外部输入的核心方法。用于获取用户输入、随机数、网络请求等游戏系统外部的数据。

函数签名

// 模式1: 同步/异步函数 async use<R>(target: () => R | Promise<R>): Promise<R> // 模式2: 组件挂载 async use<R>(targetId: string, component: React.JSX.Element): Promise<R>

基础用法

获取随机数

const randomNumber = await Game.use(() => Math.random()); if (randomNumber > 0.5) { Game.narrate`随机数为 ${randomNumber},大于 0.5`; }

异步网络请求

const response = await Game.use(async () => { const res = await fetch('/api/data'); return res.json(); }); Game.narrate`获取到数据: ${response.message}`;

用户文本输入

const userName = await Game.use<string>( "target", <InputDialog title="请输入你的名字" type="text" /> ); Game.narrate`你好,${userName}`;

用户选项输入

const choice = await Game.use<string>( "target", <InputDialog title="请选择" type="select-single" options={[ { label: "选项A", value: "a" }, { label: "选项B", value: "b" }, ]} /> );

输入序列缓存

Game.use() 获取的所有值会自动记录到输入序列中,用于存档恢复:

  • 保存时:记录所有外部输入的值
  • 恢复时:在 headless 模式下从缓存直接返回,跳过实际执行

这意味着:

  • 随机数在恢复时会返回相同的值
  • 用户输入不需要重新输入
  • 网络请求不会重复发送

注意事项

  • 调用 Game.use() 会先执行当前操作队列(processBatch)
  • 组件模式会自动挂载和卸载组件
  • 必须在场景执行函数内调用
Last updated on