2017-09-12 14 views
1

私は解決しなければならない小さなC#の問題がありますが、私の人生にとって何が間違っているのか理解できません。ブール値を反転する

ゲームでデバッグモードを使用していますが、これはブール値debugModeがtrueに設定されているときにオンになります。この変数は、gameInfoオブジェクト内に保持され、私のGameInfoクラスで参照されています。キーボードの "I"キーを押してデバッグモードをオン/オフすることができるようにしたいと思います。私が試したことは次のとおりです。

if (keyboardState.IsKeyDown(Keys.I)) 
     GameInfo.gameInfo.debugMode = !GameInfo.gameInfo.debugMode; 

"I"を押すと何も起こりません。私は次の操作を実行した場合、私はオフデバッグモードをオンにすることができる午前私はアイデアが作品を知っている:

if (keyboardState.IsKeyDown(Keys.I)) 
      GameInfo.gameInfo.debugMode = false; 

誰も私が間違ってやっている知っていますか?私はもちろん、真偽をfalseに、逆にするためには、2つのifステートメントを使用して解決することができますが、上記の単純なステートメントと比較すると、それは長続きしています。あなたが提供することができます任意の助け

おかげでたくさん:)

+1

どのアーキテクチャを使用していますか? –

+1

申し訳ありませんが、何を意味するのか分かりません。私はかなりプログラミングに慣れていません。 –

+0

試した2番目のサンプルがうまくいけば、 'GameInfo.gameInfo.debugMode = GameInfo.gameInfo.debugMode? false:true; '? –

答えて

1

これは、別の旗を持っているあなたを必要としませんが、それは、一度に複数回処理されてからキーイベントを防ぐことができます。

bool keyPressRegistered = false; 

... 

if (keyboardState.IsKeyDown(Keys.I) && !keyPressRegistered) 
{ 
    keyPressRegistered = true; 
    GameInfo.gameInfo.debugMode = !GameInfo.gameInfo.debugMode; 
} 

... 

keyPressRegistered = !(keyPressRegistered && keyboardState.IsKeyUp(Keys.I)); 
+1

ああありがとう!これは問題を解決しましたが、最後の行をif条件に変更して動作させる必要がありました。if(keyboardState。IsKeyUp(Key.I)){keyPressRegistered = false;} –

関連する問題