2015-02-07 49 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