Heey,
我们用Monogame创建了一款游戏,但我们遇到了以下问题。
我们有一个在你现在加载游戏时播放的themeong是themeong有时会播放的问题但有时却没有。我们将它通过XNA管道转换为wma并将其加载到我们的游戏中,同时将.xnb加载到我们的游戏中,但有时候音乐不想启动。
我们只是使用标准代码来启动歌曲,所有这些代码都会触发。
internal void PlayBackgroundMusic()
{
if (MediaPlayer.GameHasControl)
{
MediaPlayer.Volume = mainVolume;
MediaPlayer.Play(backgroundMusic);
MediaPlayer.IsRepeating = true;
}
}
我们也使用SoundEffects,但是这些只有在每次开始时都不会播放的歌曲100%的时间。顺便说一句,Windows RT运行良好。
答案 0 :(得分:3)
确保调试器通过调试进入if语句(或临时删除语句)。另一种可能性是该功能在游戏完全初始化之前运行。您可以尝试延迟该功能,直到游戏完全加载。
PS:我还不能对问题发表评论,所以这是一个答案。
修改强>:
好吧,经过一些关于Song类的讨论并查看MonoGame中的实现后,我得出结论,SoundEffect类更易于使用和更好地实现。
backgroundSound = Content.Load<SoundEffect>("alarm");
protected override void BeginRun()
{
// I created an instance here but you should keep track of this variable
// in order to stop it when you want.
var backSong = backgroundSound.CreateInstance();
backSong.IsLooped = true;
backSong.Play();
base.BeginRun();
}
我使用这篇文章:using BeginRun override在启动时播放SoundEffect。
答案 1 :(得分:0)
如果您想播放歌曲,请使用Song
课程。但在将它们转换为“.xnb”之前,请确保使用“.mp3”而不是“.wma”。
backgroundMusic = Content.Load<Song>("MainTheme");
MediaPlayer.Play(backgroundMusic);
MediaPlayer.IsRepeating = true;
请参阅MSDN。