假设我的C#程序正在运行,屏幕上有一个按钮,如果我将鼠标放在它上面,它会将游戏更改为新页面。现在我在项目前放了另一个窗口,让我们说Google Chrome,我正在搜索网页并点击内容,因为我这样做现在正在运行的项目仍在与鼠标交互,甚至可以按下按钮如果我看不到按钮。如何关闭此交互?
答案 0 :(得分:0)
通过在Game类的实现中使用IsActive(默认情况下称为Game1),可以避免在游戏未对焦时接收输入。
protected override void Update(GameTime gameTime)
{
base.Update(gameTime);
if (!IsActive)
{
return;
}
// ... do regualr update.
}
http://msdn.microsoft.com/en-us/library/microsoft.xna.framework.game.isactive.aspx
或者,如果您已经有一些游戏状态管理系统,则可以在游戏中覆盖OnDeactived方法。当游戏失去焦点时,将调用此函数。
protected override void OnDeactivated(object sender, EventArgs args)
{
base.OnDeactivated(sender, args);
// If we are in a state which it makes sense to pause the game, then do it now.
if (GameObjectManager.pInstance.pCurUpdatePass == BehaviourDefinition.Passes.GAME_PLAY)
{
GameObjectManager.pInstance.pCurUpdatePass = BehaviourDefinition.Passes.GAME_PLAY_PAUSED;
}
}
http://msdn.microsoft.com/en-us/library/microsoft.xna.framework.game.ondeactivated.aspx