LogoPixi’VN

资源文件

Pixi’VN 中资源类型和存储选项(本地或在线)概览及使用示例。

资源可以本地存储在项目中,也可以在线托管。 频繁使用的资源——例如角色立绘、背景图和背景音乐——最好保存在本地。 仅使用一次或体积较大的可选文件更适合在线托管。 两种方式各有取舍:

本地资源

要在本地保存和使用资源,你可以使用任何文件夹——没有限制。 但建议使用 src/assets 文件夹。 在此文件夹中,您可以创建子文件夹以更好地组织资源。

PixiJS AssetPack 已通过 Vite.js 集成预配置在 Pixi’VN 项目模板中——自动处理和优化您的资源,让您专注于构建项目。

在开发阶段(vite dev),它会监视 src/assets 文件夹的变化并即时处理。 在生产构建阶段(vite build),它会在打包前执行完整的优化流程。

它应用的优化包括:

  • 压缩 — 减小文件大小以加快加载速度。
  • 格式转换 — 在支持的情况下将图像转换为现代格式(如 WebP、AVIF)。
  • 纹理图集 — 将多张小图像合并为一张精灵表,以减少绘制调用。

处理完成后,它会在 public/assets 中生成优化后的文件,并生成 src/assets/manifest.gen.json 文件,其中包含所有资源包及其路径的列表。 这些输出随后会被 PixiJS 用来高效地加载资源。

bgm_cheerful.wav
sfx_whoosh.wav
background_main_menu.png
bg01-hallway.webp
mc-neutral.png
manifest.gen.json
index.ts
.assetpack.ts
vite.config.ts
{
    "bundles": [
        {
            "name": "audio",
            "assets": [
                {
                    "alias": "bgm_cheerful",
                    "src": "./assets/audio/bgm_cheerful.wav"
                },
                {
                    "alias": "sfx_whoosh",
                    "src": "./assets/audio/sfx_whoosh.wav"
                }
            ]
        },
        {
            "name": "mainmenu",
            "assets": [
                {
                    "alias": "background_main_menu",
                    "src": "./assets/mainmenu/background_main_menu.png"
                }
            ]
        },
        {
            "name": "start",
            "assets": [
                {
                    "alias": "bg01-hallway",
                    "src": "./assets/start/bg01-hallway.webp"
                }
            ]
        },
        {
            "name": "mc",
            "assets": [
                {
                    "alias": "mc-neutral",
                    "src": "./assets/mc/mc-neutral.png"
                }
            ]
        }
    ]
}

资源托管

您可以将资源保存到线上。 如果您想节省项目空间,或者想创建一款无需提前下载即可在线游玩的游戏,这是一个不错的选择。 您可以使用任何允许上传文件并生成公开 URL 的云服务(需确保所使用的云服务允许 CORS 请求)。

以下是一些流行的在线资源托管选项:

准备好资源后,您需要手动定义游戏可以使用哪些资源,以及它们如何分组到包中。

强烈建议遵循 资源加载最佳实践,以最大程度减少加载时间并避免不必要地阻塞游戏。

所有 Pixi’VN 模板都包含一个 src/assets/index.ts 文件,您可以编辑该文件来注册您的资源:

src/assets/index.ts
import generatedManifestJson from "@/assets/manifest.gen.json";
import { AUDIO_BUNDLE_NAME } from "@/constants";
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: [
        ...generatedManifestJson.bundles,
        {
            name: AUDIO_BUNDLE_NAME,
            assets: [
                {
                    alias: "bgm_cheerful",
                    src: "https://raw.githubusercontent.com/user/project/refs/heads/main/audio/bgm_cheerful.wav",
                },
                {
                    alias: "sfx_whoosh",
                    src: "https://raw.githubusercontent.com/user/project/refs/heads/main/audio/sfx_whoosh.wav",
                },
            ],
        },
        // 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",
                },
            ],
        },
        // characters
        {
            name: "mc",
            assets: [
                {
                    alias: "mc-neutral",
                    src: "https://raw.githubusercontent.com/user/project/refs/heads/main/characters/mc-neutral.png",
                },
            ],
        },
    ],
};

其他功能

本页内容