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

问题描述 投票:0回答:1

我正在尝试在Monogame中开发节奏游戏。这些音符与帧速率无关,并且可以在不同的计算机上一致地工作,但是播放的歌曲不是。现在,我已经将其连接起来,因此直到我按下某个键时,笔记spawn和MediaPlayer.Play()才开始(因此,它位于loadcontent / initialize之外,就像我看到的其他解决方案所建议的那样)。在我按“ I”键(在Update中选中)之前,歌曲不会开始播放。但是,这首歌似乎在不同设备上的不同时间开始播放。我在笔记本电脑上(用电池)和台式机上都拉下了项目,同时在两者上都按了“ I”键,在笔记本电脑上得到了不同的结果。有时它比桌面要早几秒钟,而其他时候则要落后一到两秒(通常是这种情况)。在桌面上似乎很一致。我尝试了十几次,但一切仍然同步,但笔记本电脑上没有。我担心这只能在我的PC上运行,而不能在其他PC上运行。

我尝试启用fixedTimeStep并将FPS设置为60(并将TargetElapsedTime设置为窗口标题,以确保它们确实都达到60),但结果仍然不一致。我从MediaPlayer类的其他答案中了解到有关使用PlayPosition的信息,但是该属性是只读的,因此我不太了解如何使用它。

起初,我认为我的笔记仅取决于帧速率,但是在设置FPS和fixedTimeStep之后,还将笔记本电脑放在台式机显示器上,它们完全匹配。只是歌曲没有同步。我仍然是XNA的新手,但找不到其他人报告这样的不同歌曲开始时间。任何帮助将不胜感激。

xna monogame
1个回答
0
投票

我想到一个解决方案,第二天早上我起床了。我认为MediaPlayer.Play()上肯定会有一些开销,但是我想知道是否可以启动它,暂停它,然后恢复运行。事实证明,有一个Pause()和Resume()方法是使这项工作缺失的地方。所以!如果外面有人遇到类似的问题,这就是我所做的。我保留了激活MediaPlayer.Play()的键,但之后立即添加了MediaPlayer.Pause()。然后我又得到了另一把琴键来恢复歌曲,恢复歌曲时便产生了音符。因此,按“ I”会播放歌曲并立即将其暂停。按下“ R”将恢复歌曲并开始产生音符。

© www.soinside.com 2019 - 2024. All rights reserved.