c# - 我想在我的Android游戏中播放音乐以及分析声音数据。使用Unity C#

标签 c# android audio unity3d

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

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

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

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

最佳答案

如果希望用户从手机上的自定义文件夹中获取数据,则需要读取音频文件的字节并将其缓存到磁盘。然后,您可以创建一个音频剪辑,然后像平常一样播放它。我无法帮助您使用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

希望这可以帮助!

关于c# - 我想在我的Android游戏中播放音乐以及分析声音数据。使用Unity C#,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43865534/

相关文章:

c# - Xamarin Android 支持库 v4(不完整)?

c# - 使用 FluentValidation 验证集合,返回一个属性失败的规则错误

audio - 如何以编程方式将 .rm (RealPlayer Media) 文件转换为 MP3 或其他格式?

java - Twitter4J.Status 与 android.os.AsyncTask.Status 冲突?

android - 在 Android 编辑文本字段中显示一条消息

android - 如何通过Android应用程序设置铃声?

javascript - 在 JavaScript 中并行播放相同的 HTML5 音频

c# - 在 C# 中显示 unicode 文本

c# - 为什么我可以抽象覆盖抽象方法?

android - 为什么图标/图像在平板电脑上看起来模糊(不清晰),但在 android 手机上看起来很好?