0

在 LoadFile.cs 中加载音频的函数:

public async Task<AudioClip> LoadAudioFile(string path) // Loads *.mp3's
{
    //Load audio from the chosen *.mp3 file
    using UnityWebRequest www = UnityWebRequestMultimedia.GetAudioClip(path, AudioType.MPEG);
    var operation = www.SendWebRequest();

    while (!operation.isDone)
        await Task.Yield();

    if (www.result == UnityWebRequest.Result.Success)
        return DownloadHandlerAudioClip.GetContent(www);
    else
        return null;
}

调用 TrackLoader.cs 中的函数:

beatmap.music = await LoadFile.instance.LoadAudioFile(Path.Combine(folderPath, beatmap.musicName));

用户可以在我正在开发的节奏游戏中创建自己的自定义关卡,这意味着他们可以导入自己的音频、歌曲的艺术等。我使用上述方法加载音频(与图像的加载方式基本相同)。

当我运行它时,在我的好计算机上加载一个 4 分钟的 *.mp3 大约需要300-450 毫秒。在游戏中,当我进入歌曲选择场景时加载歌曲可能需要几分钟,这太长了。我不确定如何实施更好的解决方案。

诸如 osu!mania 和 Quaver 之类的游戏可以即时访问音乐,我最好的猜测是音乐正在流式传输,而不是一次全部加载然后播放。

我试图谷歌如何做到这一点,但我很难过。我怎样才能加快这个过程?

如果有什么我错过的,我很乐意提供任何东西。

需要这个的原因:为了能够在歌曲选择中预览歌曲。

显示当前加载速度有多慢的视频

我知道这可能存在设计缺陷,例如在切换到歌曲选择场景之前没有后台加载,加载点击的内容等。但是,即使实现了这些,我相信它不会达到我需要的速度,例如如何使用 Quaver有它。我不知道为什么 FPS 如此之低,以及为什么即使在退出播放模式后调试器也会继续运行。

4

0 回答 0