如何在两个标志布尔值之间切换?

时间:2018-11-18 17:59:41

标签: c# unity3d

public bool animCurve = true;
public bool straightLine = false;

然后在更新中

void Update()
    {
        if (objectsToMove != null && objectsToMove.Length > 0)
        {
            if (animCurve)
            {
                straightLine = false;
                AnimationCurve();
            }

            if (straightLine)
            {
                animCurve = false;
                StraightLineTrack();
            }
        }
    }

在运行游戏时,animCurve是正确的,但是如果我单击直线,则什么也不会发生。我需要先取消选中animCurve,然后再检查直线。

但是,如果未选中StraightLine为true,则可以检查animCurve为true,它将自动将StraightLine更改为false。 为什么它不起作用?为什么我需要先取消选中animCurve,然后再将true选定为true,这是直线?

我希望当我将其中一个标志设置为true时,另一个标志会自动设置为false。

1 个答案:

答案 0 :(得分:2)

您有两个布尔变量,但只希望其中一个为真。当一个为真时,另一个为假。在这里应该使用枚举来简化您的逻辑。

您的枚举:

public enum LineType
{
    Curve, Straight
}

声明并检查启用了哪一个:

LineType lineType = LineType.Straight;

void Update()
{
    if (lineType == LineType.Straight)
    {
        StraightLineTrack();
    }

    else if (lineType == LineType.Curve)
    {
        AnimationCurve();
    }
}

要将其更改为曲线:

lineType = LineType.Curve;