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

im使用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);
    }
}

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

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

您缺少括号:

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

您想要的可能是

if (shopOpened)
{
    shopOpened = false;
    upgradeOne.SetActive(false);
}
else
{
    shopOpened = true;
    upgradeOne.SetActive(true);
}

事实上,我宁愿简单地写为

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

else之后您缺少大括号。

尽管您可以编写不带括号的if / else语句,但仅将else之后的第一行视为else语句的属属。 对于您而言,这意味着upgradeOne.SetActive(true);将始终被排除,因为它将被解释为。

if (shopOpened)
    {

        shopOpened = false;
        upgradeOne.SetActive(false);
    }
    else
    {
        shopOpened = true;
    }

    upgradeOne.SetActive(true);

我总是会加括号以完全防止此类错误。

本文链接:https://www.f2er.com/3168078.html

大家都在问