文档
LiveGame

LiveGame

⚠️

此页面正在建设中

LiveGame 是代表游戏当前状态的主类。

公共属性

game

Game 实例

story

当前 Story 实例

公共方法

getStorable

返回 Storable 实例

newGame

开始新游戏

  • return this

deserialize

加载保存的游戏

调用此方法后,当前游戏状态将丢失,舞台将触发强制重置

**注意:**即使只更改一行脚本,保存的游戏也可能与新版本不兼容

示例:

const savedGame = {
    // ...保存的游戏数据
};
 
// 在组件中使用钩子
const {game} = useGame();
 
// 将保存的游戏数据传递给游戏实例
game.getLiveGame().deserialize(savedGame);

serialize

序列化当前游戏状态

你可以使用此方法将游戏状态保存到文件或数据库中

**注意:**即使只更改一行脚本,保存的游戏也可能与新版本不兼容

onCharacterPrompt

角色说话时调用

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

菜单完成时调用

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