我正在尝试访问在我的脚本中实例化的另一个游戏对象上的脚本,无论我做什么,脚本总是返回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;
我看了几个与我类似的问题,但没有一个答案似乎有帮助。
任何帮助都将不胜感激。
答案 0 :(得分:4)
不容易,
添加此代码
asteroid = (GameObject)Instantiate(asteroidPrefab);
// add this...
asteroid.name = "Added test item";
运行程序并等到你看到&#34;添加测试项目&#34;
检查,你是否也看到&#34;小行星处理程序是空的&#34;
现在,在字面上查看Heirarchy的场景,找到名为添加测试项
的对象仔细查看检查员,看看你看到了什么。