【发布时间】:2012-04-06 15:35:38
【问题描述】:
我正在尝试为我的 XNA 游戏添加背景音乐,但 XNA 中的选项都要求将音频文件转换为 .wav 并作为项目资源包含在内。这对我不起作用有两个原因。首先,.wav 文件非常庞大,对用户没有真正的好处。其次,如果用户更喜欢自己的音乐,他们将无法拥有可替代的 mp3 文件夹。对于播放实际上不属于项目的 mp3,我有哪些选择?
【问题讨论】:
标签: c# audio xna background-music
我正在尝试为我的 XNA 游戏添加背景音乐,但 XNA 中的选项都要求将音频文件转换为 .wav 并作为项目资源包含在内。这对我不起作用有两个原因。首先,.wav 文件非常庞大,对用户没有真正的好处。其次,如果用户更喜欢自己的音乐,他们将无法拥有可替代的 mp3 文件夹。对于播放实际上不属于项目的 mp3,我有哪些选择?
【问题讨论】:
标签: c# audio xna background-music
经过大量搜索,我终于在 App Hub 论坛上找到了this 帖子,这给了我一个解决方案。
您可以使用Song.FromUri 加载歌曲,然后使用MediaPlayer.Play(song) 播放该歌曲。
Uri songPath = new Uri("Songs/song.mp3", UriKind.Relative);
Song song = Song.FromUri("song", songPath);
MediaPlayer.Play(song);
在您的问题中,您说(很明显)您不想要使用 MediaPlayer,但似乎原因是因为您首先需要转换歌曲并且它需要纳入项目资源。这样一来,歌曲只需要位于“Songs”目录中(与可执行文件位于同一目录中)。
使用SoundEffect 类也行不通,因为您必须使用TitleContainer.OpenStream,当我尝试它时它喜欢抱怨。
【讨论】: