1

嘿,

我们用 Monogame 创建了一个游戏,但我们遇到了以下问题。

当您现在加载游戏时,我们有一个主题曲会播放的问题是主题曲有时会播放但有时不会播放。我们通过 XNA 管道将其转换为 wma 并将其与 .xnb 一起加载到我们的游戏中,但有时音乐不想开始。

我们只是使用标准代码来开始一首歌曲,所有这些代码都会触发。

internal void PlayBackgroundMusic()
{
    if (MediaPlayer.GameHasControl)
    {
        MediaPlayer.Volume = mainVolume;
        MediaPlayer.Play(backgroundMusic);
        MediaPlayer.IsRepeating = true;
    }
}

我们也使用 SoundEffects,但这些效果 100% 有效,只是每次开始时不会播放的歌曲。顺便说一句,Windows RT 运行良好。

4

2 回答 2

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();
}

我使用了这篇文章:使用 BeginRun override在启动时播放 SoundEffect。

于 2013-10-16T19:33:39.990 回答
0

如果您想播放歌曲,请使用Song该类。但在将它们转换为“.xnb”之前,请确保您使用的是“.mp3”而不是“.wma”。

backgroundMusic = Content.Load<Song>("MainTheme");
MediaPlayer.Play(backgroundMusic);
MediaPlayer.IsRepeating = true;

请参阅MSDN

于 2013-10-16T22:14:45.357 回答