将gameobject的名称与其父名称进行比较

时间:2016-01-22 02:48:47

标签: unity3d

这是我的代码:

GameObject no=GameObject.Find("LevelButton");
GameObject noparent=GameObject.Find("LevelPHwithrect (" + (i + 1) + ")");

问题是我能够找到gameobjects,但是当我打电话

if(no.transform.parent.name==noparent.transform.name)
{
    //do something
}

我收到一个错误,指出空引用,即使它找到了对象,并且我将no的父级设置为noparent。

如果这篇文章中有错误,请原谅我,因为这是我堆栈溢出的第一天。

2 个答案:

答案 0 :(得分:1)

使用name的{​​{1}}属性,而不是GameObject。同时进行防御性编码并检查Transform

null

答案 1 :(得分:0)

如果你有一个附加到“no”游戏对象的脚本,请尝试使用:

this.gameObject.name == this.gameObject.transform.parent.gameObject.name

GameObject.Find有点危险,因为您很容易拼错或更改Unity界面中游戏对象的名称而忘记在代码中更改它。我可以问你为什么需要这个片段吗?