Лучшее решение, которое я нашел для этого, - перестать отвечать на ввод (и, возможно, приостановить вашу игру), если он неактивен.
Вы можете проверить Game.IsActive
или подключить Activated
и Deactivated
события.
Есть один незначительный недостаток - я бы просто посчитал это ошибкой во фреймворке - игра всегда запускается в активном состоянии, даже если игра на самом деле не активна, когда запускается. (Например: вы щелкаете в другое окно между запуском игры и ее фактическим запуском.)
Вы можете обойти это, проверив, что такое активное окно, когда ваша игра запускается, возможно, используя GetForegroundWindow
. Или вы можете просто не беспокоиться об этом - иногда это происходит как разработчик, но я подозреваю, что это на самом деле не влияет на конечных пользователей.