2015-02-07 25 views
0

对于(x数量)任务中具有4(1,2,3,D)级别的动态菜单。当玩家点击一个按钮但是当他点击下一个按钮时,我有一个Typer脚本文本,下一个Typer将文本写在另一个文本上,因为这两个文本都是(并且需要)在同一个地方。如何在此特定情况下检查为空

有喜欢使用公共gameobjects + SETACTIVE但我将有很多按钮,所以这将是不方便等等,而不是其他的解决方案:

我想使禁用启用前,该任务所有发现的文本功能新的,但TextLevel3有时根本就不存在,并返回null(referenceExeption),所以我想检查这个并打破它的null或继续,如果它是安全的。我只是不知道如何与该Gameobject.Find和GetComponent结合做到这一点

void DisableTexts() 
    { 
    text = GameObject.Find("TextLevel1").GetComponent<Typer>().enabled = false; 
    text = GameObject.Find("TextLevel2").GetComponent<Typer>().enabled = false; 
    text = GameObject.Find("TextLevelD").GetComponent<Typer>().enabled = false; 

    //This is what i need: 
     Check if (TextLevel3 != null){go ahead} or if (TextLevel3 = null){break;(?)} 

    text = GameObject.Find("TextLevel3").GetComponent<Typer>().enabled = false; 
    } 

    public void CheckLevel (string selectedLevel) 
{ 
    DisableTexts(); 
GameObject.Find("TextLevel" + selectedLevel).GetComponent<Typer>().enabled = true; 
CurrentMission = "Level" + missionSelected + "." + selectedLevel;  
} 
+1

' var t = GameObject.Find(“TextLevel3”); if(t!= null)text = t ...' – 2015-02-07 20:11:58

回答

0

首先你应该检查是否存在它,然后使用GetComponent否则你将得到一个null exception

if(GameObject.Find("TextLevel3") != null) 
     text = GameObject.Find("TextLevel3").GetComponent<Typer>().enabled = false; 
+0

一旦C#6被释放,你可以使用?。运算符为此,所以这将成为: 'text = GameObject.Find(“TextLevel3”)?. GetComponent ().enabled = false;' 但是,C#6不会在这里,直到VS2015被释放。 – Maarten 2015-02-07 22:34:46

+0

很好的知道 – 2015-02-08 07:07:56