我想要这样做的原因是能够分层背景音乐。 (例如,简单的歌曲开始播放,播放器触发某些内容,添加乐器)。我可以解决时间问题,如果有的话。
我以为我可以用MediaPlayer / Song做到这一点,但它不会起作用。
我真正想要的是使用SoundEffectInstance的缺点。
p.s,我不会使用XACT,因为我最终会转到MonoGame。
由于
答案 0 :(得分:2)
实际上,那是SoundEffectInstance的用途!
但它有局限性,具体取决于游戏运行的平台:
在Windows Phone上,游戏总共最多可以播放16个 一次SoundEffectInstance实例,跨所有加载组合 SoundEffect对象。加载总数的唯一限制 SoundEffectInstance和SoundEffect对象是可用内存。 但是,用户一次只能播放16种音效。尝试 播放超出此限制的SoundEffectInstance将失败。在Windows上, 没有硬性限制。玩太多的实例可能会导致 性能下降。在Xbox 360上,限制是300音效 实例加载或播放。如果需要,请处置旧实例 更多。
哦,顺便说一句,自从我玩XNA以来已经很长时间了,但我很确定XACT工具在它的生命周期结束时不再是必需的。
我好像记得你可以在Content文件夹中加载一个mp3并通过SoundEffectInstance
对象播放它。
答案 1 :(得分:1)
实际上,我认为您会发现使用MediaPlayer课程结合Song课程是推荐播放背景音乐的方式。
提供播放,暂停,恢复和停止歌曲的方法和属性。 MediaPlayer还可以显示随机播放,重复播放,音量播放位置和可视化功能。
我认为的主要区别在于MediaPlayer可以将数据流式传输到内存中,而不是一次性加载所有内容。因此,对于长时间播放音乐曲目,这是可行的方法。
此外,在MonoGame中,这些类是通过包装执行相同操作的平台特定类来实现的。例如,在Android上,SoundEffectInstance使用Android SoundPool(用于声音效果),MediaPlayer使用Android MediaPlayer(用于音乐)。请参阅MonoGame论坛上的this post以供参考。
slygamer说:用于背景音乐的MediaPlayer和用于音效的SoundEffect是如何设计使用的。