XNA Mediaplayer.Play() 开始在不同时间跨计算机播放?

XNA Mediaplayer.Play() starts playing at different times across computers?

我正在尝试在 Monogame 中开发节奏游戏。音符与帧速率无关,并且在不同的计算机上一致地工作,但播放的歌曲却不是。现在我把它连接起来,所以音符生成和 MediaPlayer.Play() 在我按下一个键之前不会开始(所以它在 loadcontent/initialize 之外,就像我看到其他解决方案所建议的那样)。直到我按下 "I" 键(在更新中检查),歌曲才开始播放。但是,这首歌似乎在不同设备上的不同时间开始播放。我在我的笔记本电脑(使用电池)和台式机上拉下项目,并在两者上同时按下 "I" 键,我在我的笔记本电脑上得到了不同的结果。有时它会比桌面快几秒,有时会比桌面慢一两秒(通常是这种情况)。它在桌面上看起来非常一致。我尝试了十几次,所有内容仍然同步,但不是在我的笔记本电脑上。我担心这只适用于我的 PC 而不适用于其他人。

我已经尝试启用 fixedTimeStep 并将 FPS 设置为 60(并将 TargetElapsedTime 设置为 window 标题以确保它们确实都达到 60),但我仍然得到不一致的结果。我已经从 MediaPlayer class 中阅读了有关使用 PlayPosition 的其他答案,但是 属性 是只读的,所以我不太清楚如何使用它。

起初,我以为我的笔记只是依赖于帧速率,但在设置 FPS 和 fixedTimeStep 并将我的笔记本电脑放在桌面显示器上后,它们完美匹配。就是歌曲不同步。我仍然是 XNA 的新手,但我找不到其他人报告像这样的不同歌曲开始时间。任何帮助将不胜感激。

我在第二天早上起床的第 想到了一个解决方案。我想 MediaPlayer.Play() 一定有一些开销,但我想知道我是否可以启动它,暂停它,然后继续。事实证明,有一个 Pause() 和 Resume() 方法,这是使这项工作所缺少的。

所以!如果其他人有类似的问题,这就是我所做的。我保留了激活 MediaPlayer.Play() 的密钥,但之后立即添加了 MediaPlayer.Pause()。然后我得到了另一个键来恢复歌曲,并且在恢复歌曲时产生了音符。所以按 "I" 播放歌曲并立即暂停。按 "R" 恢复歌曲并开始生成音符。