在 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);
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;
我试图找到我实例化的转换的 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);
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;