我试图找到我想要变形的孩子。这是我的代码:
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)
有人知道为什么吗?
编辑*
奇怪的是它确实找到了变换并实例化它。但它无法找到孩子。
孩子们确实出现在场景中,如果我将一个脚本附加到寻找孩子的变换上,它就会找到它们。
答案 0 :(得分:2)
例外来自:
Debug.Log(level2Load.childCount);
level2Load
是null
。因此,尝试访问其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;