如何在这种特定情况下检查null

时间:2015-02-07 20:08:25

标签: c# android unity3d nullreferenceexception

对于(x量)任务中4(1,2,3,D)级别的动态菜单。我在文本上有一个Typer脚本,当玩家点击按钮但是当他点击下一个按钮时会激活:下一个Typer将文本写在另一个上面,因为两个文本都在(并且需要)在同一个地方。 / p>

还有其他解决方案,例如使用公共游戏对象+ 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 个答案:

答案 0 :(得分:0)

首先你要检查它是否存在,然后使用GetComponent否则你会得到null exception

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