Gameobject.find返回null

时间:2015-11-13 07:15:47

标签: c# unity3d

我厌倦了调试,但不知道是什么问题

foreach (string go in dist)
{
    Debug.Log("gameobject texture change " + go);
    Debug.Log(go.ToString());
    Debug.Log(go.GetType());
    string s = go;
    string ss = "GRB_BLD_RESIDENT_z17x68817y86702_V0_L9_2015_18";
    Debug.Log(GameObject.Find("GRB_BLD_RESIDENT_z17x68817y86702_V0_L9_2015_18").name);
    Debug.Log(GameObject.Find(ss).name);
    if (GameObject.Find(s.ToString()) != null)
    {
        Debug.Log(GameObject.Find(s).name);
        Debug.Log("gameobject is not null");
    }
    else {
        Debug.Log("gameobject is null");
    }

如果我使用它,

Debug.Log(GameObject.Find("GRB_BLD_RESIDENT_z17x68817y86702_V0_L9_2015_18").name);

它将带来游戏对象,但使用循环它不起作用。我记录所有的名字都是正确的。

2 个答案:

答案 0 :(得分:0)

如果我理解正确你试图找到dist中的所有游戏对象,对吗? 你的Debug.Log(go.ToString())输出是什么?

go已经是一个字符串,我怀疑从ToString()获取string只会返回string而不是字符串的值。

答案 1 :(得分:0)

以下代码工作的原因是Debug.Log(GameObject.Find(“GRB_BLD_RESIDENT_z17x68817y86702_V0_L9_2015_18”)。name);因为您正在使用Gameobject类并访问其名称属性。

但是在你的foreach循环中,如果你使用foreach(在dict中的Gameobject obj),你正在迭代dict并使用它的字符串元素,那么上面的方法就可以了。

如果(go ==“nameOfObject”)

,您也可以这样做

希望有所帮助