无法在unity3D中找到变形的孩子

时间:2015-08-19 18:15:02

标签: unity3d transform children

我试图找到我想要变形的孩子。这是我的代码:

public Transform GetLevel(int _currentLevel)
{
    string levelName = "Level" + _currentLevel;
    Transform level2Load = MonoBehaviour.Instantiate(Resources.Load("Prefabs/Levels/" + levelName)) as Transform;
    Debug.Log(level2Load.childCount);
    return level2Load;
}

问题是我收到以下错误:

NullReferenceException:未将对象引用设置为对象的实例 LevelLoading.GetLevel(Int32 _currentLevel)(在Assets / Resources / Scripts / LevelScripts / LevelLoading.cs:10)

有人知道为什么吗?

编辑*

奇怪的是它确实找到了变换并实例化它。但它无法找到孩子。

孩子们确实出现在场景中,如果我将一个脚本附加到寻找孩子的变换上,它就会找到它们。

1 个答案:

答案 0 :(得分:2)

例外来自:

Debug.Log(level2Load.childCount);

level2Loadnull。因此,尝试访问其childCount会导致空引用异常。这可能是由于as in:

MonoBehaviour.Instantiate(Resources.Load("Prefabs/Levels/" + levelName)) as Transform;

由于as tries to typecast and returns null if the typecast is invalid,我认为您的问题是实例化的对象是GameObject,而不是Transform

尝试转换为GameObject并改为使用.transform

GameObject level2Load = MonoBehaviour.Instantiate(Resources.Load("Prefabs/Levels/" + levelName)) as GameObject;
return level2load.transform;