LogoPixi’VN

资源管理

在 Pixi’VN 中使用别名和清单对资源(图片、声音、视频)进行管理、引用和加载。

要加载和操作资源(如图片、动图、视频等), 需要使用 AssetsAssets来自PixiJS库,是一个具有丰富功能的类。 如要了解更多信息,请参阅此处

在所有 Pixi’VN 函数中,你都可以直接使用图片URL,即使该URL并没有在Assets中定义。

let alien1 = await showImage("alien", "https://pixijs.com/assets/eggHead.png");

这种方法有一些缺点:

  • 从一个版本到另一个版本更改资源的URL可能会导致不兼容。
  • 每次玩家按下“继续”并开始一个使用资源的步骤时,都必须等待短暂的加载时间。
  • 在代码中直接写完整的URL会增加代码长度,并降低其可读性。

出于这些原因,建议通过以下方式处理资源。

在项目启动时初始化资源矩阵

在项目开始时初始化资源矩阵,就可以通过唯一的别名引用资源,而无需使用 URL/路径。 使用别名,可以放心更改资源的URL,而无需担心版本兼容性问题。

为此,建议创建一个异步函数defineAssets,在项目启动时调用它。 在 defineAssets函数中,用Assets 的各种方法(比如Assets.addAssets.addBundleAssets.init)给URL绑定别名。 更多细节可以参考这里

import { Assets, sound } from "@drincs/pixi-vn";
import manifest from "../assets/manifest";

export async function defineAssets() {
    // manifest
    await Assets.init({ manifest });
    // single asset
    Assets.add({ alias: 'eggHead', src: "https://pixijs.com/assets/eggHead.png" })
    Assets.add({ alias: 'flowerTop', src: "https://pixijs.com/assets/flowerTop.png" })
    Assets.add({ alias: 'video', src: "https://pixijs.com/assets/video.mp4" })
    sound.add('bird', 'https://pixijs.io/sound/examples/resources/bird.mp3');
    sound.add('musical', 'https://pixijs.io/sound/examples/resources/musical.mp3');
    // bundle
    Assets.addBundle('liam', {
        "liam-head": 'liam_head.png',
        "liam-body": 'liam_body.png',
        "liam-arms": 'liam_arms.png',
    });
}

加载资源

默认情况下,资源是“随用随加载”的。

如果资产不是保存在本地,而是保存在“资源托管服务”中,加载就要花些时间了。 这意味着启动一个step可能不会立即开始。 因此,在开始执行下一个 step(例如使用“下一步”按钮)后,玩家可能需要等待一段时间,才能“查看”到更改并运行另一个step

就算加载时间再短,每个step都要加载一下也很烦人。

为了解决这个问题,开发人员可以在游戏的某个阶段将多个加载分组。 In this way, the player will not have continuous loadings, but fewer, even if longer.

下面是几种加载资源的方式:

On this page