Ответ 1
Вы можете избавиться от своих операторов if/else, отрицая значение bool:
ruleScreenActive = !ruleScreenActive;
У меня есть некоторые проверки, чтобы проверить, активен ли экран. Код выглядит следующим образом:
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)
Вы можете избавиться от своих операторов if/else, отрицая значение bool:
ruleScreenActive = !ruleScreenActive;
Думаю, лучше писать:
ruleScreenActive ^= true;
таким образом вы избегаете писать имя переменной дважды..., что может привести к ошибкам
ruleScreenActive = !ruleScreenActive;
Это будет включено, поэтому читаемость увеличивается, затраты времени выполнения остаются неизменными:
public static bool Invert(this bool val) { return !val; }
Чтобы дать:
ruleScreenActive.Invert();