XNA MediaPlayer.Volume setter非常慢

时间:2010-09-17 01:20:54

标签: c# xna media-player

我最近在XNA框架的“Song”类下加载了我的游戏音频。

一切似乎都运转良好,直到我决定使用MediaPlayer.Volume设定器添加更改歌曲音量的可能性。

但是,当我第一次尝试更改音量时,它会慢慢地运行非常(比如3到4秒,这对于音量变化来说相当多)。之后,当我再次尝试更改音量时,音量会立即改变。

基本上,我有三个音量级别选择:中等 ...所以我的问题可能不是因为我改变了音量太高或太快。

我只想知道你们中的任何人是否知道MediaPlayer.Volume何时需要更多时间来运行,所以我可以查看我的问题所在。

1 个答案:

答案 0 :(得分:2)

如果你身处谷歌,你会发现MediaPlayer有很多性能问题。通常它们依赖于您运行的系统。这是因为它在幕后使用Windows Media Player(在Windows上)。

以下是一些缓解性能问题的方法:

  • 永远不要从MediaPlayer读取值(例如:Volume - 这包括使用+=来设置它)。自己存储实际值,只分配给它。
  • 由于上述原因,请使用状态更改事件接收状态更改通知。
  • 将MediaPlayer类的使用放在一个单独的线程上(ThreadPool在Windows上就足够了) - 这解决了它只是阻塞主线程的情况(大多数情况下,但在少数系统上它显然会阻止整个过程)或整个系统)。
  • 让问题消失的唯一可靠方法是根本不使用MediaPlayer。您可以将音乐放入XACT并进行压缩(我认为您也可以使用SoundEffect)。

如果我不得不猜测(我这样做) - 我会说将音量变化移到另一个线程会解决你的问题。