2015-11-04 52 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"); } }