我知道這是一個初學者的問題,但我不能繼續我的學習,直到我明白這裏發生了什麼。在我在Update()中執行的if塊中,我無法理解爲什麼兩個if語句同時執行。我認爲只要主動變量在塊的開始處被初始化,編譯器就會下移到第一個if語句來查看條件是否爲真。如果它是真的,它會執行該塊中的代碼,直到定時器達到零。然後它會下移到下一個。如果條件在第一個條件是真的,那麼它在第二個條件是錯誤的,所以它會再次移動到起點。一個新的bool值將被計算用於主動性,並且該過程將被重複。我腦海裏浮現的是,無論我做什麼,兩個塊都被執行,定時器被完全忽略。這很混亂!爲什麼我的if語句中的條件被忽略? C#
我已經提出了一些非常基本的代碼來突出顯示我遇到的問題。我在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)之後; – JRowan 2014-09-27 03:57:39