LiveGame
⚠️
此页面正在建设中
LiveGame 是代表游戏当前状态的主类。
公共属性
game
Game 实例
story
当前 Story 实例
公共方法
getStorable
newGame
开始新游戏
return this
deserialize
加载保存的游戏
调用此方法后,当前游戏状态将丢失,舞台将触发强制重置
**注意:**即使只更改一行脚本,保存的游戏也可能与新版本不兼容
示例:
const savedGame = {
// ...保存的游戏数据
};
// 在组件中使用钩子
const {game} = useGame();
// 将保存的游戏数据传递给游戏实例
game.getLiveGame().deserialize(savedGame);
savedGame: SavedGame
- SavedGame
serialize
onCharacterPrompt
角色说话时调用
fc: (event: LiveGameEvent["event:character.prompt"]) => void
- 参见 LiveGameEvent- 返回
LiveGameEventToken
- 参见 LiveGameEventToken
const {game} = useGame();
const [texts, setTexts] = useState<string[]>([]);
useEffect(() => {
const token = game.getLiveGame().onCharacterPrompt((event) => {
setTexts((prevTexts) => [...prevTexts, event.text]);
});
return () => {
token.cancel();
};
}, []);
return (
<div>
{/* 你的文本日志 */}
</div>
);
onMenuChoose
菜单完成时调用
fc: (event: LiveGameEvent["event:menu.choose"]) => void
- 参见 LiveGameEvent- 返回
LiveGameEventToken
- 参见 LiveGameEventToken
capturePng
捕获游戏截图,仅包含玩家元素
返回 PNG 图像的 Base64 编码数据 URL
const {game} = useGame();
function handleButtonClick() {
game.getLiveGame().capturePng().then((dataUrl) => {
// 对 dataUrl 进行操作
});
}
- 返回
Promise<string>
captureJpeg
捕获游戏截图,仅包含玩家元素
返回压缩后的 JPEG 图像数据 URL
- 返回
Promise<string>
captureSvg
捕获游戏截图,仅包含玩家元素
返回 SVG 数据 URL
- 返回
Promise<string>
capturePngBlob
捕获游戏截图,仅包含玩家元素
返回 PNG 图像的 Blob
- 返回
Promise<Blob | null>
requestFullScreen
在 Chrome/Safari/Firefox/IE/Edge/Opera 上请求全屏,玩家元素将进入全屏模式
注意:此方法应在用户手势(例如,点击事件)的响应中调用
Safari iOS 和 Webview iOS 不支持,更多信息请参见 MDN-requestFullscreen (opens in a new tab)
options?: FullscreenOptions | undefined
- 返回
Promise<void> | void
exitFullScreen
退出全屏
- 返回
Promise<void> | void
onPlayerEvent
监听玩家元素的事件
const {game} = useGame();
useEffect(() => {
return game.getLiveGame().onPlayerEvent("click", (event) => {
// 执行操作
}).cancel;
}, []);
type: K
- 事件类型listener: (this: HTMLElement, ev: HTMLElementEventMap[K]) => any
- 事件监听器options?: boolean | AddEventListenerOptions
- 返回
LiveGameEventToken