LogoPixi’VN

存档与读档

介绍如何在 Pixi'VN 中实现游戏进度保存与加载,涵盖文件导出、IndexedDB使用,以及网页游戏的自动存档策略。

Templates

所有官方模板均已内置createGameSaveloadSave函数。 具体实现可参考utils/save-utility.ts

存档与读档是视觉小说的核心功能之一——它让玩家能随时保存进度,并在之后继续体验故事。 对于篇幅较长、分支丰富的作品而言,这一功能几乎是必不可少的。

创建存档

要创建新的存档,使用Game.exportGameState()。 该方法会返回一个包含当前游戏状态的对象,你可将其保存为文件或写入数据库。

实用建议:为存档文件添加额外信息,如存档名称、创建时间,以及当前游戏画面的截图,能显著提升玩家的管理体验。

Templates

要生成缩略图,使用canvas.extractImage()。 它会返回当前画布的 base64 字符串,可直接用作存档预览图。

例如:

import { Game } from "@drincs/pixi-vn";
import GameSaveData from "../models/GameSaveData";

export function createGameSave(options?: { image?: string; name?: string }): GameSaveData {
    const { image, name = "" } = options || {};
    return {
        saveData: Game.exportGameState(),
        gameVersion: __APP_VERSION__,
        date: new Date(),
        name: name,
        image: image,
    };
}

读取存档

要加载存档时,使用Game.restoreGameState()。 该函数具有以下参数:

  • saveData:要恢复的存档数据对象。
  • navigate:加载完成后跳转至指定路径的函数

例如:

import { Game } from "@drincs/pixi-vn";
import { LOADING_ROUTE } from "../constans";
import GameSaveData from "../models/GameSaveData";

export async function loadSave(saveData: GameSaveData, navigate: NavigateFunction) {
    await navigate(LOADING_ROUTE);
    await Game.restoreGameState(saveData.saveData, navigate);
}

FAQ

On this page