首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用Bevy加载文件夹中的所有音频文件?

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

Stack Overflow用户
提问于 2020-12-17 03:54:40
回答 1查看 232关注 0票数 0

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

代码语言:javascript
复制
// 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();

下面是我写的函数:

代码语言:javascript
复制
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有一种更优雅、更简单的方法来实现这一点。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-12-17 03:59:17

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65330265

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档