【问题标题】:Gameobject.find is returning nullGameobject.find 返回 null
【发布时间】:2015-11-13 18:20:53
【问题描述】:

调试很累但不知道问题出在哪里

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);

它会带来游戏对象,但使用循环它不起作用。我已经记录了所有名称都是正确和相同的。

【问题讨论】:

    标签: c# unity3d


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

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

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

      你也可以这样做 if(go == "nameOfObject")

      希望对你有帮助

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-06-28
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-08-21
        相关资源
        最近更新 更多