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 在 音频
7,596 每月下载量
用于 9 个包 (7 个直接使用)
545KB
2K SLoC
Bevy Kira音频
此Bevy插件旨在测试将Kira集成到Bevy中。目标是替换或更新bevy_audio
,如果Kira证明是一个好的方法。目前,此插件可以播放ogg
、mp3
、flac
和wav
格式,并支持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文件作为示例进行查看。
要播放音频,通常需要将音频文件作为资产加载。这需要使用 AssetLoaders
。 bevy_kira_audio
包含了大多数常见音频格式的加载器。您可以使用以下特性启用它们:ogg
(默认启用),mp3
,wav
或 flac
。以下示例假设已启用特性 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 |
许可
根据您的选择,双重许可以下之一
- Apache License,版本 2.0,(LICENSE-APACHE 或 https://apache.ac.cn/licenses/LICENSE-2.0)
- MIT 许可证(LICENSE-MIT 或 https://opensource.org/licenses/MIT)
任选其一。
示例中的资产可能根据不同的条款进行分发。请参阅 examples
目录中的 readme。
贡献
除非您明确声明,否则任何有意提交以包含在您的工作中的贡献,根据 Apache-2.0 许可证的定义,应如上所述双重许可,而无需任何额外条款或条件。
依赖项
~22–58MB
~1M SLoC