6个版本

0.2.0-rc.42024年6月21日
0.2.0-rc.32024年6月19日
0.1.1 2024年4月28日
0.1.0 2024年4月28日

#243 in 音频

Download history 232/week @ 2024-04-24 51/week @ 2024-05-01 2/week @ 2024-05-22 268/week @ 2024-06-19 12/week @ 2024-06-26 24/week @ 2024-07-03

341 每月下载量

MIT 许可证

1.5MB
745 代码行

Bevy <-> Kira作为组件

Crates.io Version GitHub License GitHub Actions Workflow Status Link to docs

此存储库是对创建Kira crate(一个针对游戏的音频播放库,也被用于其他几个Rust项目)集成到Bevy的替代API的实验,作为当前Bevy音频引擎的替代品。

功能

  • 音频作为组件
  • 静态和流式音频源
  • 支持空间场景

lib.rs:

通过kira crate将音频支持添加到Bevy。

此crate旨在通过集成Kira(一个针对游戏的音频播放库,也被用于其他几个Rust项目)来创建bevy_audio的替代品。

这个特定的crate是在创建基于组件的ECS API的实验,而不是目前bevy_kira_audio采用的基于资源的方案。

要开始播放声音,在实体上插入一个AudioBundle。这是一个支持任何兼容声音源的泛型包。提供了一个使用AudioFileBundle类型别名的音频文件实现,支持流式播放。

当插入AudioFile时,其播放将立即开始。要防止这种情况,请使用AudioFileBundle::settings中的start_paused字段并将其设置为false。

音频系统在注册用于播放的添加声音时创建一个AudioHandle组件。此句柄允许您控制声音。对于AudioFile,这意味着暂停/恢复、设置音量、声像和播放速率。

空间音频通过内置的 SpatialEmitter 组件得到支持,该组件指示插件将实体作为发射器添加,前提是它还附有 GlobalTransform 组件。其设置控制空间效果的行为。

示例

use bevy::prelude::*;
use bevy_kira_components::prelude::*;

fn main() {
    App::new()
        .insert_non_send_resource(AudioSettings {
            // Only needed for tests
            backend_settings: AudioBackendSelector::Mock { sample_rate: 48000, },
            ..default()
        })
        .add_plugins((DefaultPlugins, AudioPlugin))
        .add_systems(Startup, add_sound)
        .run();
}

fn add_sound(mut commands: Commands, asset_server: Res<AssetServer>) {
    commands.spawn(AudioFileBundle {
        source: asset_server.load("my_sound.ogg"),
        ..default()
    });
}

依赖项

~23–58MB
~1M SLoC