XNA captura cliques do mouse quando o jogo não tem foco

13

Se eu pressionar a tecla Alt e fizer coisas fora da janela do jogo, o jogo ainda captura os cliques do mouse (cliques esquerdo e direito).

O jogo não "consome" os cliques, pois eles também são enviados para o aplicativo que tem o foco.

Mas é bastante irritante ouvir um tiro cada vez que você clica no seu navegador de internet ...

Além disso, o problema ocorre mesmo se o jogo estiver definido como tela cheia.

asmo
fonte

Respostas:

15

A melhor solução que encontrei para isso é parar de responder à entrada (e provavelmente interromper o jogo também) se ele ficar inativo.

Você pode verificar Game.IsActiveou conectar os eventos Activatede Deactivated.

Há uma pequena desvantagem - eu consideraria isso um bug na estrutura - o jogo sempre começa no estado Ativo, mesmo que o jogo não esteja realmente ativo quando começar a rodar. (Por exemplo: você clica em outra janela entre iniciar o jogo e iniciar o jogo.)

Você pode contornar isso verificando qual é a janela ativa quando o jogo iniciar, provavelmente usando GetForegroundWindow. Ou você pode simplesmente não se preocupar com isso - isso acontece ocasionalmente como desenvolvedor, mas suspeito que isso realmente não afeta os usuários finais.

Andrew Russell
fonte