两个具有常见布尔问题的If语句

时间:2018-10-25 06:18:13

标签: c# unity3d

我的脚本中有两个if语句和两个bool(bool1和bool2)。我的脚本是这样的-

using UnityEngine
using system.collection

public class example : MonoBehaviour
{
    public bool bool1;
    public bool bool2;

    void Update()
    {
        if (bool1 == true)
        {
            // play animation1
        }
        if (bool1 == true && bool2 == true)
        {
            // play animation2
        }
    }
}

当两个布尔值都为真时,我只希望播放animation2,而不要同时播放animation1和animation2。

我该怎么办?

3 个答案:

答案 0 :(得分:5)

您需要将语句重写为:

if (bool1 == true && bool2 == true)
{
    // play animation2
}
else if (bool1 == true)
{
    // play animation1
}

因为您的第一个陈述更强,也就是说,当第二个陈述为真时,它就是对的,这就是为什么您需要对条件进行逆向检查的原因。

大多数开发人员会忽略== true,因为这是不必要的。如果要检查某物是否为false,则可以执行!bool1。这是您的代码,其中没有不必要的== true

if (bool1 && bool2)
{
    // play animation2
}
else if (bool1)
{
    // play animation1
}

答案 1 :(得分:2)

您可以进行一些嵌套,其附加好处是您的bool1仅需要评估一次:

80

答案 2 :(得分:1)

您必须更改条件顺序。

void Update()
{
    if (bool1 && bool2)
    {
        // play animation2
    }
    else if (bool1)
    {
        // play animation1
    }  
}