我无法弄清楚为什么我的代码上有一个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;
}
}