Pixi’VN

声音和音乐

如何在 Pixi’VN 中使用 media、channels 和 sound 管理器播放、暂停、恢复、编辑和停止声音与音乐,包括淡入淡出过渡和滤镜,基于 Tone.js 构建。

整个音频系统已在 1.6.0/1.8.0 版本中进行了修订。

声音模块是对 Tone.js 库的封装。它提供了一个简单的接口来播放声音,并在每个叙事步骤(step)保存当前状态。

ink

你可以在 ink 语法中使用此方法。更多内容请参见此处。

import { narration, newLabel, sound } from "@drincs/pixi-vn";

export const startLabel = newLabel("start", [
    async () => {
        await sound.play("sfx_whoosh", { delay: 0.1 });
        await sound.play("bgm_cheerful", { loop: true, channel: "bgm" });
        narration.dialogue =
            "Hello, I'm a cheerful background music that will loop forever until you stop me.";
    },
    () => {
        sound.pause("bgm_cheerful");
        narration.dialogue = "I'm paused, but I can be resumed.";
    },
    () => {
        sound.resume("bgm_cheerful");
        narration.dialogue = "I'm back!";
    },
]);

初始化

同时建议在游戏初始化后立即定义 channels。为此,您可以使用 sound.channels.add 函数。

main.ts
import { Game, sound } from "@drincs/pixi-vn";

Game.init(body, {
    // ...
}).then(() => {
    sound.channels.add("bgm", { background: true });
    sound.channels.add("sfx");
    sound.defaultChannelAlias = "sfx";
});

播放

如果在调用 play 函数时未指定 channel,则该 media 将被分配给 sound.defaultChannelAlias。

最基本的功能是启动一个声音(asset)。这可以通过 play 函数来实现。 play 函数会生成一个 media 实例,您可以通过它来控制所产生的声音。

过渡效果

暂停与恢复

有多种方式可以暂停单个或多个 media。

编辑

只有 media 的设置会被保存在游戏存档文件中。

几乎所有设置都可以在任何时间为不同目的进行编辑。

停止

要停止声音,您可以使用 stop 函数。

音频滤镜

目前,它们只能在启动 media 时被修改。

滤镜是一种可以对声音进行高级自定义的元素。

其他功能

本页内容