Как я могу переключаться между двумя флагами логического? - PullRequest
0 голосов
/ 18 ноября 2018
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 имеет значение true, но если я нажму на прямую, ничего не произойдет.Сначала мне нужно снять флажок с animCurve, а затем проверить прямую.

Но если прямая линия не проверена как истинная, я могу проверить, что animCurve имеет значение true, и она автоматически изменит прямую линию на false.Почему это не работает по-другому?Почему мне нужно сначала снять флажок animCurve, а затем проверить true на прямой линии?

Я хочу, чтобы при проверке установить true, один из флагов автоматически установит false.

1 Ответ

0 голосов
/ 18 ноября 2018

У вас есть две логические переменные, но вы хотите, чтобы только одна была истинной.Когда одно истинно, другое ложно.Здесь enum должен использоваться для упрощения вашей логики.

Ваш enum:

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;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...