歌曲不会一直在Monogame中播放

时间:2013-10-16 19:20:42

标签: c# xna windows-store-apps monogame

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运行良好。

2 个答案:

答案 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