これにはGame.SupressDrawメソッドを使用できます。リンクの発言から:
Update 中にこのメソッドを呼び出して、次の Update の呼び出し後まで Draw の呼び出しを防止します。この方法は、更新の結果として表示が変更されない場合に、小型デバイスでバッテリー寿命を節約するために使用できます。たとえば、画面が静的でバックグラウンド アニメーションがない場合、Update 中にプレーヤーの入力を調べて、プレーヤーが何らかのアクションを実行しているかどうかを判断できます。入力が検出されない場合、このメソッドにより、ゲームは次の更新まで描画をスキップできます。
例として、次のコードはDraw
関数を 1 回だけ呼び出します。SuppressDraw
これをテストしたところ、呼び出しなしで CPU 使用率が高い (70%) ことに気付きました。を使用するSupressDraw
と、CPU 使用率が劇的に低下しました (15% 未満)。数値は異なる場合があります。
public class Game1 : Microsoft.Xna.Framework.Game
{
...
private bool _drawn = false;
protected override void Update(GameTime gameTime)
{
if (_drawn)
SuppressDraw();
}
protected override void Draw(GameTime gameTime)
{
GraphicsDevice.Clear(Color.CornflowerBlue);
spriteBatch.Begin();
/* draw stuff here */
spriteBatch.End();
_drawn = true;
}
...
}
1 つの呼び出しSupressDraw
のみを抑制することに注意してください。Draw
への呼び出しが増えるのを防ぐにDraw
は、継続的に を呼び出す必要がありSupressDraw
ますUpdate
。うまくいけば、それは理にかなっています。