2015-11-04 71 views
1

我有這個代碼與此if聲明。對我來說,它看起來像是編程正確,但if語句的代碼從不執行。我知道我的變量設置爲true,但它不起作用。如果聲明正文不執行

這是與如果更新功能:

void Update() 
{ 
    if (t0 && t2) 
    { 
     Debug.Log("Bingo"); 
     Application.LoadLevel("Bingo"); 
    } 
} 

下面是設置變量爲true代碼:

if(gameObject.name.Equals("Button 0")) 
{ 
    t0 = true; 
    Debug.Log(gameObject.name); 
} 

if (gameObject.name.Equals("Button 2")) 
{ 
    t2 = true; 
    Debug.Log(gameObject.name); 
} 

我知道這些變量設置爲true,雖然它的奇怪,因爲如果我從代碼中的其他位置設置變量true,它就可以工作。

+1

我懷疑T0和T2正在由它得到您的Update()方法時設置不同。你在Update()方法中放置了一個斷點來查看這些值是什麼? –

+0

它可能是一個競爭條件。是否有其他線程可能更新t0和/或t2? –

+0

@Ahmedilyas更新函數每幀調用 – LukaxH

回答

7

這兩個if語句只會提供一個true,因爲'gameObject.name'的值只會等於'Button 0'或'Button 2',除非它們至少運行兩次同時滿足'Button 0'和'按鈕2'的條件,你將只有一個真值

2

這兩個if語句不會在單次執行中爲真,因爲按鈕名稱不能保存兩個不同的值。

使用||而不是& &

void Update() { if (t0 || t2) { Debug.Log("Bingo"); Application.LoadLevel("Bingo"); } }