Синтаксис while-loop для C #, Что я сделал не так? - PullRequest
0 голосов
/ 19 января 2019

Visual Studio сообщает мне, что моя скобка неверна и вместо этого ожидала скобку.

Я пытался просмотреть руководство по Unity, но я, должно быть, неправильно понимаю, потому что не вижу, что делаю неправильно.

void OnTriggerEnter(Collider other)
{
    while (Health > 3)
    {
        Health++;
        Debug.Log(Health);
    } // VS is telling me the issue is this bracket.


    else
    {
        GameOver();
    }

}

Я пытаюсь создать кодв единичных приращениях считать до трех.После трехкратного столкновения игрока с объектом вызывается метод GameOver.

1 Ответ

0 голосов
/ 19 января 2019
Петля

A while не имеет части else.Блок while выполняется в цикле;как только условие равно false, цикл заканчивается и выполнение продолжается с оператором после цикла, нет никакой причины / необходимости помещать туда else.

Но вваш случай, вы, вероятно, не хотите цикл вообще.Я полагаю, ваш триггер срабатывает при каждом столкновении.Таким образом, вы действительно имели в виду условие if, когда ветвь else полностью в порядке.

Кроме того, я думаю, вы либо хотели Health-- уменьшить здоровье, или вы хотели Health < 3 для подсчета коллизий (и, возможно, переименования переменной в CollisionCount или что-то подобное?).

Итак, ваш код должен быть

void OnTriggerEnter(Collider other)
{
    if (Health > 0)
    {
        Health--;
        Debug.Log(Health);
    }
    else
    {
        GameOver();
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...