2016-08-08 38 views
1

Ich mache ein Spiel mit der Monogame-Engine und verwende MediaPlayer, um Hintergrundmusik zu spielen. Wenn ich den Song wechsle, der gerade gespielt wird, kann ich die RAM-Auslastung um mehrere MB erhöhen (mit dem "Performance and Diagnostic Tool"), obwohl es ein Song ist, der bereits geladen wurde. Nach vielen Songwechseln könnte das zum Problem werden. Ich möchte, dass das Spiel so wenig Ressourcen wie möglich nutzt.Die RAM-Auslastung steigt, wenn der MediaPlayer die Titel wechselt (Monogame C#)

Song song1; 
Song song2; 

protected override void LoadContent() 
     { 
      song1 = Content.Load<Song>("song1"); 
      song2 = Content.Load<Song>("song2"); 
     } 

void updateMusic() 
     { 
      if (gameState == "lvl1") { MediaPlayer.Play(song1); } 
      else if (gameState == "lvl2") { MediaPlayer.Play(song2);} 
     } 

Antwort

1

Stellt sich heraus, dass die aktuelle Version von MonoGame, das ich verwendete (3.5), abgehört wurde und irgendeine Art von Speicherverwaltungsproblem hat. Nach dem Wechsel zu MonoGame Version 3.4 funktioniert jetzt das Laden und Entladen einwandfrei.

0

Ich bin mir ziemlich sicher, dass Sie den aktuellen Song entladen, nachdem zu einem neuen Song ändern, wenn Sie nicht RAM-Auslastung erhöhen wollen. Auch wenn das nicht das Problem ist, sollten Sie das trotzdem tun, wenn Sie nicht vorhaben, dieses Lied in naher Zukunft erneut oder jederzeit zu verwenden. Und haben Sie getestet, was passiert, wenn Sie eine Menge Songs laden und zwischen ihnen wechseln? Nur weil Sie beim Wechseln zwischen diesen beiden Songs einen Nutzungs-Spike sehen, bedeutet dies nicht unbedingt, dass die Verwendung beim Wechseln zwischen mehreren Songs weiter stapelt.