【发布时间】:2014-09-27 03:15:53
【问题描述】:
我知道这是一个初学者的问题,但在我了解这里发生的情况之前,我无法继续学习。在我在 Update() 中执行的 if 块中,我无法理解为什么两个 if 语句同时执行。我认为一旦在块的开头初始化了主动变量,编译器就会向下移动到第一个 if 语句以查看条件是否为真。如果为真,它将执行该块中的代码,直到计时器达到零。然后它会向下移动到下一个。如果第一个条件为真,那么第二个条件为假,因此它会再次移动到开头。将为主动性计算一个新的布尔值,并重复该过程。让我大吃一惊的是,无论我做什么,都会执行两个块并且完全忽略计时器。这很混乱!
我编写了一些非常基本的代码来突出我遇到的问题。我在 Unity3d 中使用这个 C# 代码:
public float firstTimer = 2;
public float secondTimer = 10;
public bool initiative;
void Update()
{
initiative = InitiativeOrder();
if(initiative == true && firstTimer > 0);
{
firstTimer -= Time.deltaTime;
Debug.Log ("First timer has finished!");
}
if(initiative == false && secondTimer > 0);
{
secondTimer -= Time.deltaTime;
Debug.Log ("Second timer has finished!");
}
}
public bool InitiativeOrder()
{
float player = Random.Range(1,10);
float enemy = Random.Range(1,10);
if(player > enemy)
{
return true;
}
else if (player < enemy)
{
return false;
}
else
{
return true;
}
}
【问题讨论】:
-
删除 ;从你的 if() if(initiative == true && firstTimer > 0);
标签: if-statement unity3d