资源管理
在 Pixi’VN 中使用别名和清单对资源(图片、声音、视频)进行管理、引用和加载。
要加载和操作资源(如图片、动图、视频等), 需要使用 Assets。 Assets来自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.add、Assets.addBundle和Assets.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.
下面是几种加载资源的方式: