LogoPixi’VN

声音和音乐

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

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

sound 模块是围绕 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!";
    },
]);

Initialize

同样建议在游戏初始化后立即定义 channels。 To do this, you can use the sound.channels.add function.

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 函数中未指定 channelmedia 将被分配到 sound.defaultChannelAlias

基本功能是启动一个声音(asset)。 可以使用 play 函数来完成此操作。 play 函数会生成一个 media 实例,你可以与之交互以控制所产生的声音。

过渡效果

暂停与恢复

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

编辑

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

出于不同目的,几乎所有设置都可以随时进行编辑。

停止

要停止一个声音,你可以使用 stop 函数。

音频滤镜

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

滤镜是允许对声音进行高级自定义的元素。

其他功能

本页内容