null引用使外部脚本统一

时间:2017-01-08 18:03:28

标签: c# unity3d unity5

我无法弄清楚为什么我的代码上有一个nullreference异常,基本上我有9个对象,所有这些对象都有一个我希望通过其他脚本onTriggerEnter激活的脚本

所以我这样做了:(我知道我可以使用foop lop但现在我只想测试它)

public class DoorEnter : MonoBehaviour {

private GameObject red;
private GameObject red1;
private GameObject red2;
private GameObject red3;
private GameObject red4;
private GameObject red5;
private GameObject red6;
private GameObject red7;
private GameObject red8;
private GameObject red9;
// Use this for initialization
void Start () {
    red = GameObject.Find ("Red");
    red1 = GameObject.Find ("Red1");
    red2 = GameObject.Find ("Red2");
    red3 = GameObject.Find ("Red3");
    red4 = GameObject.Find ("Red4");
    red5 = GameObject.Find ("Red5");
    red6 = GameObject.Find ("Red6");
    red7 = GameObject.Find ("Red7");
    red8 = GameObject.Find ("Red8");
    red9 = GameObject.Find ("Red9");

}

void OnTriggerEnter(Collider c)
{
    if (c.gameObject.tag == "Player") {
        Debug.Log (red);
        red.GetComponent<PingPong> ().enabled = true; // this line
        red1.GetComponent<PingPong> ().enabled = true;
        red2.GetComponent<PingPong> ().enabled = true;
        red3.GetComponent<PingPong> ().enabled = true;
        red4.GetComponent<pingPongX> ().enabled = true;
        red5.GetComponent<pingPongX> ().enabled = true;
        red6.GetComponent<pingPongX> ().enabled = true;
        red7.GetComponent<PingPong> ().enabled = true;
        red8.GetComponent<pingPongX> ().enabled = true;
        red9.GetComponent<pingPongX> ().enabled = true;
    }
}

}

我得到一个空引用异常“this line”,你们可以在上面看到,我做错了什么?我只想访问其他游戏对象脚本并在激活触发器时启用它们:S

修改

在发布之前我可以做的事情:

在对red进行操作之前,请确保null Gameobject不是GetComponent

如果red GameObject为null,请确保在调用red = GameObject.Find ("Red");之前未禁用它。

在调用GetComponent<PingPong>()媒体资源之前,请确保null不是enabled

如果GetComponent<PingPong>()为null,则将PingPong脚本附加到red Gameobject。而已。它只是意味着PingPong脚本没有附加到red GameObject。

if(red != null)
{
    PingPong pg = red.GetComponent<PingPong>();
    if(pg != null)
    {
        pg.enabled = true; 
    }
}

0 个答案:

没有答案