C#的While-Loop语法,我做错了什么?

时间:2019-01-19 17:12:55

标签: c# while-loop syntax

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 :(得分:1)

while循环没有else部分。 while块是循环执行的;只要条件为false,循环就会结束,并且在循环后继续执行 语句,就没有理由/不需要将else放在那里。

但是在您的情况下,您可能根本不需要循环。我猜您的触发器会在每次碰撞时触发。因此,您的意思确实是一个if条件,其中else分支是完全可以的。

此外,我想您要么想要Health--来降低健康程度,要么 您想要Health < 3来计算碰撞次数(并且可能将变量重命名为CollisionCount或这样的吗?)。

因此,您的代码应该是

void OnTriggerEnter(Collider other)
{
    if (Health > 0)
    {
        Health--;
        Debug.Log(Health);
    }
    else
    {
        GameOver();
    }
}