Note
Access to this page requires authorization. You can try signing in or changing directories.
Access to this page requires authorization. You can try changing directories.
Demonstrates how to add pause functionality to a game.
To add pause functionality to a game
- Derive a class from Game.
- Add a variable to track the pause state.
- Add a variable to track the state of the pause key.
- Add a function to poll the state of the pause key with Keyboard.GetState and KeyboardState.IsKeyDown. If the key has changed from down to up, toggle the pause state.
- Add a conditional around any update code so it will be called only if the game is not paused.
#region Using Statements
using System;
using System.Collections.Generic;
using Microsoft.Xna.Framework;
using Microsoft.Xna.Framework.Audio;
using Microsoft.Xna.Framework.Content;
using Microsoft.Xna.Framework.Graphics;
using Microsoft.Xna.Framework.Input;
using Microsoft.Xna.Framework.Storage;
#endregion
public class Game1 : Microsoft.Xna.Framework.Game
{
GraphicsDeviceManager graphics;
ContentManager content;
private bool paused = false;
private bool pauseKeyDown = false;
private KeyboardState keyboardState;
private GamePadState gamePadState;
public Game1()
{
graphics = new GraphicsDeviceManager( this );
content = new ContentManager( Services );
}
protected override void Initialize()
{
// TODO: Add your initialization logic here.
base.Initialize();
}
protected override void LoadGraphicsContent( bool loadAllContent )
{
if (loadAllContent)
{
// TODO: Load any ResourceManagementMode.Automatic content.
}
// TODO: Load any ResourceManagementMode.Manual content.
}
protected override void UnloadGraphicsContent( bool unloadAllContent )
{
if (unloadAllContent == true)
{
content.Unload();
}
}
protected override void Update( GameTime gameTime )
{
gamePadState = GamePad.GetState( PlayerIndex.One );
keyboardState = Keyboard.GetState();
// Allows the default game to exit on Xbox 360 and Windows.
if (gamePadState.Buttons.Back == ButtonState.Pressed)
this.Exit();
// TODO: Add your update logic here.
checkPauseKey();
if (paused == false)
{
base.Update( gameTime );
Simulate();
}
}
public void Simulate()
{
// Add game logic.
}
void checkPauseKey()
{
if (keyboardState.IsKeyDown( Keys.P ) || (gamePadState.Buttons.Y == ButtonState.Pressed))
{
pauseKeyDown = true;
}
else if (pauseKeyDown)
{
pauseKeyDown = false;
paused = !paused;
}
}
protected override void Draw( GameTime gameTime )
{
graphics.GraphicsDevice.Clear( Color.CornflowerBlue );
// TODO: Add your drawing code here.
base.Draw( gameTime );
}
}