gpt4 book ai didi

audio - 如何使用Bevy加载文件夹中的所有音频文件?

转载 作者:行者123 更新时间:2023-12-03 11:47:09 24 4
gpt4 key购买 nike

我正在尝试制作一个音乐播放器,用户可以在其中播放文件夹中的任何音频文件。为此,我正在尝试生成包含Music组件和Sound(Handle<AudioSource>)组件的实体。在Bevy示例中,我看到了这行代码,这似乎是我想要的:

// You can load all assets in a folder like this. They will be loaded in parallel without blocking
let _scenes: Vec<HandleUntyped> = asset_server.load_folder("models/monkey").unwrap();
这是我写的函数:
fn load_audio(mut commands: Commands, asset_server: Res<AssetServer>, audio: Res<Audio>) {
let music = asset_server.load_folder("music").unwrap();
for song in music {
commands.spawn((
Music,
Sound(song),
));
}
}
该代码给出了编译错误,因为 song的类型为 HandleUntyped。我的第一个想法是将 HandleUntyped转换为 Handle<AudioSource>。我必须想象有某种方法可以做到这一点,否则 HanldeUntyped会变得毫无用处,但是通过Bevy文档来看,我找不到任何方法可以做到这一点。 Handle::<AudioSource>::from(song)无效。我还考虑过使用 std::fs库获取目录中的所有音频文件,并使用Bevy分别加载每个音频文件,但是 load_folder方法的存在似乎暗示Bevy具有更优雅,更简单的方法。

最佳答案

当然,在放弃搜索并发布问题后,我会立即找到答案。 HandleUntyped实现 typed() 函数,它将其转换为类型化的Handle。我需要做的就是用Sound(song)替换Sound(song.typed())

关于audio - 如何使用Bevy加载文件夹中的所有音频文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65330265/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com