19次重大发布

0.20.0 2024年7月5日
0.19.0 2024年2月17日
0.18.0 2023年11月4日
0.16.0 2023年7月13日
0.3.0 2021年2月17日

#17音频

Download history 2543/week @ 2024-05-05 2257/week @ 2024-05-12 2571/week @ 2024-05-19 2428/week @ 2024-05-26 2867/week @ 2024-06-02 1719/week @ 2024-06-09 1788/week @ 2024-06-16 1566/week @ 2024-06-23 832/week @ 2024-06-30 1573/week @ 2024-07-07 2041/week @ 2024-07-14 1731/week @ 2024-07-21 1854/week @ 2024-07-28 1759/week @ 2024-08-04 2346/week @ 2024-08-11 1459/week @ 2024-08-18

7,596 每月下载量
用于 9 个包 (7 个直接使用)

MIT/Apache

545KB
2K SLoC

Bevy Kira音频

Crates.io docs license Crates.io

此Bevy插件旨在测试将Kira集成到Bevy中。目标是替换或更新bevy_audio,如果Kira证明是一个好的方法。目前,此插件可以播放oggmp3flacwav格式,并支持Web构建。

声音可以在通道中播放。每个通道都有暂停或停止播放的控件,可以更改其中所有声音的音量、播放速度和声像。您可以轻松添加新通道并通过Bevy的ECS访问它们(参见custom_channel示例)。

用法

注意:Bevy的bevy_audio功能默认启用,与此插件不兼容。如果您想使用bevy_kira_audio,请确保不要启用bevy_audio功能。同样,对于Bevy的vorbis功能也是如此。有关版本0.14的所有默认功能的列表,请参阅Bevys的Cargo文件,并在您的Cargo文件中手动列出它们,排除您不想要的那些。请确保将Bevy依赖项的default-features设置为false。您可以通过bevy_game_template的cargo文件作为示例进行查看。

要播放音频,通常需要将音频文件作为资产加载。这需要使用 AssetLoadersbevy_kira_audio 包含了大多数常见音频格式的加载器。您可以使用以下特性启用它们:ogg(默认启用),mp3wavflac。以下示例假设已启用特性 ogg

use bevy_kira_audio::prelude::*;
use bevy::prelude::*;

fn main() {
   App::new()
        .add_plugins((DefaultPlugins, AudioPlugin))
        .add_systems(Startup, start_background_audio)
        .run();
}

fn start_background_audio(asset_server: Res<AssetServer>, audio: Res<Audio>) {
    audio.play(asset_server.load("background_audio.ogg")).looped();
}

您可以为正在播放的声音或开始播放声音时更改设置,如音量、声像或播放速率。所有更改都可以作为平滑过渡完成。默认情况下,它们几乎是瞬间的。

声音设置

您可以在播放声音时配置声音

use bevy_kira_audio::prelude::*;
use bevy::prelude::*;
use std::time::Duration;

fn play_audio(asset_server: Res<AssetServer>, audio: Res<Audio>) {
    audio.play(asset_server.load("background_audio.ogg"))
        // The first 0.5 seconds will not be looped and are the "intro"
        .loop_from(0.5)
        // Fade-in with a dynamic easing
        .fade_in(AudioTween::new(Duration::from_secs(2), AudioEasing::OutPowi(2)))
        // Only play on our right ear
        .with_panning(1.0)
        // Increase playback rate by 50% (this also increases the pitch)
        .with_playback_rate(1.5)
        // Play at half volume
        .with_volume(0.5)
        // play the track reversed
        .reverse();
}

可选地,您也可以加载带有已应用设置的音频。这需要特性 settings_loader

声音设置在 ron 文件中。以下文件被加载为 AudioSource,循环播放并在循环前有一个 3 秒的引入部分

(
    // The actual sound file in your assets directory
    file: "sounds/loop.ogg",

    loop_behavior: Some(3.0),
)

这将使加载的声音默认循环,并在声音中重复播放时从三秒处开始(这三秒是引入部分)。

还有更多设置可用。请参阅 settings_loader 示例 了解所有选项。

控制声音

您可以选择控制整个音频通道及其中的所有播放实例(channel_control 示例),或单个音频实例(instance_control 示例)。两种方式都提供支持多种缓动的 Tweens 的音频过渡。

空间音频

空间音频支持有限。目前,只能根据发射器和接收器的位置自动更改音频的音量和声像。请参阅 spatial 示例 了解一些代码。

兼容的 Bevy 版本

主分支与最新的 Bevy 版本兼容。

bevy_kira_audio 版本的兼容性

Bevy 版本 bevy_kira_audio 版本
0.14 0.20
0.13 0.19
0.12 0.18
0.11 0.16 - 0.17
0.10 0.15
0.9 0.13 - 0.14
0.8 0.11 - 0.12
0.7 0.9 - 0.10
0.6 0.8
0.5 0.4 - 0.7
0.4 0.3
0.13 main
main bevy_main

许可

根据您的选择,双重许可以下之一

任选其一。

示例中的资产可能根据不同的条款进行分发。请参阅 examples 目录中的 readme

贡献

除非您明确声明,否则任何有意提交以包含在您的工作中的贡献,根据 Apache-2.0 许可证的定义,应如上所述双重许可,而无需任何额外条款或条件。

依赖项

~22–58MB
~1M SLoC