【问题标题】:I want to play music in my Android game as well as analyse the sound data. Using Unity C#我想在我的 Android 游戏中播放音乐以及分析声音数据。使用 Unity C#
【发布时间】:2017-05-09 09:03:17
【问题描述】:

这可能有点复杂,但我会尝试将其分解。我正在使用 Unity 5 引擎和 C# 脚本构建一个 Android 游戏。我有我的基本元素,我的项目中下一步也是最困难的一步是执行以下操作:

我需要在运行时确定的用户手机上播放背景音乐。 我还想读取这个文件的声音数据来操作游戏(基于歌曲文件)。

我遇到的问题是 Unity 本身的音乐功能仅限于我放入资产中的音乐,而不是在运行时从 Android 音乐目录中计算出来的音乐。使用上找到的代码的简化版本 http://answers.unity3d.com/questions/652919/music-player-get-songs-from-directory.html 我可以在运行时从我的计算机上的资产中播放音乐,但音乐不会在我的手机上从包含的资产中播放,如果我能弄清楚,我不确定它是否适用于 Android 文件路径。

有没有更好的方法来做到这一点,或者上面的链接是最好的开始,为什么我的手机没有播放声音?任何建议表示赞赏。

【问题讨论】:

    标签: c# android audio unity3d


    【解决方案1】:

    如果您希望用户从手机上的自定义文件夹中获取数据,那么您需要读取音频文件的字节并缓存到磁盘。然后,您可以创建一个音频剪辑并像往常一样播放它。 android 文件系统我帮不了你,但是一个快速的 google 会帮你找到目录格式。

    这样做的问题是它会很慢,正如 Unity Answers 的源帖子中提到的那样。

                 byte[] rawData = byte[];
             string tempFile = Application.persistentDataPath + "/bytes.mp3";
             System.IO.File.WriteAllBytes(tempFile, rawData);
    
             WWW loader = new WWW("file://" + tempFile);
             yield return loader;
             if(!System.String.IsNullOrEmpty(loader.error))
                 Debug.LogError(loader.error);
    
             AudioClip s1 = loader.GetAudioClip(false, false, AudioType.MPEG);
                         //or
             AudioClip s2 = loader.audioClip;
    

    来源:http://answers.unity3d.com/questions/686240/audioclip-oggmp3-loaded-from-byte-array.html

    希望这会有所帮助!

    【讨论】:

    • 谢谢。当我再次开始编码时,我会看一下。我正在尝试制作的游戏完全不是系统密集型的,大部分性能吸引将来自这个音乐引擎本身,所以我认为我可以管理这个性能下降,这看起来很有希望。如果这能解决我的问题,我一定会让你知道。非常感谢!!
    • 祝你好运,我很想知道这是否有效,以及性能差异到底是什么。
    猜你喜欢
    • 2016-07-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多