Puis-je «inverser» un bool?

J’ai des vérifications pour voir si un écran est actif. Le code ressemble à ceci:

if (GUI.Button(new Rect(Screen.width / 2 - 10, 50, 50, 30), "Rules")) //Creates a button { if (ruleScreenActive == true) //check if the screen is already active ruleScreenActive = false; //handle according to that else ruleScreenActive = true; } 

Y a-t-il un moyen – chaque fois que je clique sur le bouton – d’inverser la valeur de la ruleScreenActive ?

(Ceci est C # dans Unity3D)

Vous pouvez vous débarrasser de vos instructions if / else en annulant la valeur de bool:

 ruleScreenActive = !ruleScreenActive; 

Je pense qu’il est préférable d’écrire:

 ruleScreenActive ^= true; 

de cette façon, vous éviterez d’écrire deux fois le nom de la variable, ce qui peut entraîner des erreurs.

 ruleScreenActive = !ruleScreenActive; 

Cela serait intégré, donc la lisibilité augmente, les coûts d’exécution restnt les mêmes:

 public static bool Invert(this bool val) { return !val; } 

Donner:

 ruleScreenActive.Invert();