我可以';反转';嘘声

本文关键字:嘘声 反转 我可以 | 更新日期: 2023-09-27 18:20:35

我要检查一下屏幕是否处于活动状态。代码如下:

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中的C#)

我可以';反转';嘘声

您可以通过否定布尔值来消除if/else语句:

ruleScreenActive = !ruleScreenActive;

我认为最好写:

ruleScreenActive ^= true;

这样就可以避免将变量名写两次。。。这可能导致错误

ruleScreenActive = !ruleScreenActive;

这将是内联的,因此可读性提高,运行时成本保持不变:

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

给予:

ruleScreenActive.Invert();

这对于长变量名非常有用。您不必将变量名写两次。

public static void Invert(this ref bool b) => b = !b;

示例:

bool superLongBoolVariableName = true;
superLongBoolVariableName.Invert()