如何在Unity C#中检查我的布尔值是否为真?

-1 c# boolean unity-game-engine

我使用Unity 2018并使用C#,我想检查我的布尔值是否为真。这是我的代码:

public class ShopButtonClick : MonoBehaviour 
{
    bool shopOpened = false;
    public GameObject upgradeOne;

    public void ClickTheButton()
    {
        if (shopOpened)
        {
            shopOpened = false;
            upgradeOne.SetActive(false);
        }
        else

        shopOpened = true;
        upgradeOne.SetActive(true);
    }
}
Run Code Online (Sandbox Code Playgroud)

问题是它不起作用,我将脚本添加到了按钮上,但它不起作用,在我的其他项目中它可以正常工作……但是由于某种原因,现在不行了。

der*_*ugo 7

您缺少括号:

if (shopOpened)
{
    shopOpened = false;
    upgradeOne.SetActive(false);
}
// without brackets the else only applies to the first line of code after it
else
    shopOpened = true;

// This is always executed
upgradeOne.SetActive(true);
Run Code Online (Sandbox Code Playgroud)

你想要的可能是

if (shopOpened)
{
    shopOpened = false;
    upgradeOne.SetActive(false);
}
else
{
    shopOpened = true;
    upgradeOne.SetActive(true);
}
Run Code Online (Sandbox Code Playgroud)

实际上,我宁愿将其写为

public void ClickTheButton()
{
    // invert the bool flag
    shopOpened = !shopOpened;
    // directly re-use its value
    upgradeOne.SetActive(shopOpened);
}
Run Code Online (Sandbox Code Playgroud)