4

コンテンツの読み込み関数で次のコードを使用して音楽を読み込みます。

song = Content.Load<Song>("music/game");
MediaPlayer.IsRepeating = false;
MediaPlayer.Play(song);

そこに奇妙なことは何もありませんが、私のゲームの各ラウンドの長さは 2 分で、音楽 (つまり 2 分の長さ) と同期する必要がありますが、音楽は 2 ~ 4 秒早く終了します。常に同じ時間であれば問題ありません。

私の推測では、ロード時間と関係があるのでしょうか? 何かアドバイス?

4

1 に答える 1

1

できることの 1 つはContent.Load<Song>、Load メソッドに移動して、更新で再生されているかどうかを確認し、再生されていない場合は再生することです。例えば、

public void LoadContent(ConentManager content)
{
    song = content.Load<Song>("music/game");
    gameSongStartedPlaying = false; // this variable to hold if you have starting playing this song already
    MediaPlayer.IsRepeating = false;
}

public void Update(GameTime gameTime)
{
    if(MediaPlayer.State == MediaState.Stopped && !gameSongStartedPlaying)
    {
        MediaPlayer.Play(song);
        gameSongStartedPlaying = true;
    }
}

これにより、すべてのリソースがまだロードされている間に曲が「再生」される Loading フェーズではなく、Update メソッドの最初のパスで曲の再生が開始されますContent.Load<Song>(これが、曲が早く終了する理由です)。

于 2012-11-26T22:33:15.137 に答える