6个版本
0.2.0-rc.4 | 2024年6月21日 |
---|---|
0.2.0-rc.3 | 2024年6月19日 |
0.1.1 | 2024年4月28日 |
0.1.0 | 2024年4月28日 |
#243 in 音频
341 每月下载量
1.5MB
745 代码行
Bevy <-> Kira作为组件
此存储库是对创建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