在 unity3D 中找不到 children 变换

Can't find children of transform in unity3D

我试图找到我实例化的转换的 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: Object 引用未设置到 object 的实例 LevelLoading.GetLevel (Int32 _currentLevel) (在 Assets/Resources/Scripts/LevelScripts/LevelLoading.cs:10)

有人知道为什么吗?

编辑*

奇怪的是它确实找到了转换并实例化了它。但是它找不到孩子。

children 确实出现在场景中,如果我将脚本附加到寻找 children 的转换,它会找到它们。

异常来自:

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;