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