Подтвердить что ты не робот

Могу ли я "перевернуть" bool?

У меня есть некоторые проверки, чтобы проверить, активен ли экран. Код выглядит следующим образом:

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;
    }

Есть ли какой-либо способ - всякий раз, когда я нажимаю кнопку - инвертирует значение ruleScreenActive?

(Это С# в Unity3D)

4b9b3361

Ответ 1

Вы можете избавиться от своих операторов if/else, отрицая значение bool:

ruleScreenActive = !ruleScreenActive;

Ответ 2

Думаю, лучше писать:

ruleScreenActive ^= true;

таким образом вы избегаете писать имя переменной дважды..., что может привести к ошибкам

Ответ 3

ruleScreenActive = !ruleScreenActive;

Ответ 4

Это будет включено, поэтому читаемость увеличивается, затраты времени выполнения остаются неизменными:

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

Чтобы дать:

ruleScreenActive.Invert();