LogoPixi’VN

加载资源

了解如何在 Pixi’VN 中使用别名、捆绑包和不同的加载策略来加载和管理资源,保持游戏流畅运行。

特别是对于包含在线资源的游戏,遵循良好的加载规范至关重要,以避免漫长的等待时间并保持玩家的流畅体验。

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

使用别名加载资源

加载资源时,请始终使用其别名——在清单中或注册资源时定义的唯一标识符。 强烈不建议直接使用 src 路径:这会将代码与文件位置耦合,在路径或托管方式发生变化时变得脆弱。

main.ts
import { Assets } from "@drincs/pixi-vn";

const texture = await Assets.load("eggHead");
assets/manifest.gen.json
{
    "bundles": [
        {
            "name": "default",
            "assets": [
                {
                    "alias": "eggHead",
                    "src": "./assets/eggHead.png"
                }
            ]
        }
    ]
}

将资源组织到捆绑包中

最佳实践是将资源分组为捆绑包,而不是逐一注册。 捆绑包允许您通过单次调用加载一组资源,并将加载推迟到实际需要时。

对于本地资源,根据使用位置命名捆绑包不那么重要——由于本地文件加载即时,按屏幕或叙事节点(label)拆分并无实际好处。 这一规范对在线资源最有价值,因为有针对性的加载可以直接减少等待时间。

建议根据使用位置命名每个捆绑包。 例如:

  • 对于在特定叙事节点(label)中使用的资源,使用该叙事节点(label)的 id(例如 startLabel.id)作为捆绑包名称
  • 对于在对应屏幕(如主菜单)中使用的资源,使用路由路径(例如 "/")作为捆绑包名称

这样,您就可以在正确的时机加载恰好所需的资源,而不会加载多余的内容。

assets/index.ts
import { startLabel } from "@/content/labels/start.label";
import type { FileRouteTypes } from "@/routeTree.gen";
import type { AssetsManifest } from "@drincs/pixi-vn";

export const manifest: AssetsManifest = {
    bundles: [
        // screens
        {
            // main menu
            name: "/" as FileRouteTypes["fullPaths"],
            assets: [
                {
                    alias: "background_main_menu",
                    src: "https://raw.githubusercontent.com/user/project/refs/heads/main/main-menu.png",
                },
            ],
        },
        // labels
        {
            name: startLabel.id,
            assets: [
                {
                    alias: "bg01-hallway",
                    src: "https://raw.githubusercontent.com/user/project/refs/heads/main/breakdown/bg01-hallway.webp",
                },
            ],
        },
    ],
};

何时加载资源

默认情况下,资源按需加载——仅在实际需要时才加载。 然而,最后时刻加载可能会在游戏过程中造成明显的卡顿。

以下是提前加载资源最常见且推荐的时机:

本页内容