Unity - 实例化对象上的GetComponent返回Null

时间:2016-07-03 13:43:26

标签: c# unity3d nullreferenceexception

我正在尝试访问在我的脚本中实例化的另一个游戏对象上的脚本,无论我做什么,脚本总是返回null。

我首先通过这样做来实例化游戏对象。

asteroid = (GameObject)Instantiate(asteroidPrefab);

之后我尝试通过执行此操作来访问其脚本:

AsteroidHandler handler = (AsteroidHandler)asteroid.GetComponent(typeof(AsteroidHandler));

要检查处理程序是否设置正确,我这样做了:

if(handler == null){
    Debug.Log("Asteroid Handler is Null");
}else{
    Debug.Log("Asteroid Handler was setup properly");
}

问题是这总是使用null选项。我将AsteroidHandler脚本附加到asteroidPrefab预制件上,当我实例化它时,它正确实例化,因为我在屏幕上看到了小行星。仍然当我尝试访问附加到它的AsteroidHandler脚本时,似乎表现得并不存在;

我已经尝试了其他一些方法来访问AsteroidHandler,但他们都说它为null:

AsteroidHandler handler = (AsteroidHandler)asteroid.GetComponent<AsteroidHandler>();

AsteroidHandler handler = (AsteroidHandler)asteroid.GetComponent(typeof(AsteroidHandler)) as Asteroid Handler;

我看了几个与我类似的问题,但没有一个答案似乎有帮助。

任何帮助都将不胜感激。

1 个答案:

答案 0 :(得分:4)

不容易,

添加此代码

asteroid = (GameObject)Instantiate(asteroidPrefab);
// add this...
asteroid.name = "Added test item";

运行程序并等到你看到&#34;添加测试项目&#34;

检查,你是否也看到&#34;小行星处理程序是空的&#34;

现在,在字面上查看Heirarchy的场景,找到名为添加测试项

的对象

仔细查看检查员,看看你看到了什么。