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

标签 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,但他们都说它是空的:

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

.

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

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

如有任何帮助,我们将不胜感激。

最佳答案

再简单不过了,

添加这段代码

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

运行程序并等待,直到您看到“添加的测试项目”

检查一下,您是否还看到了“Asteroid Handler is Null”

现在,从字面上看场景的层次结构,找到名为Added test item的对象

仔细观察 Inspector,看看你看到了什么。

关于c# - Unity - 实例化对象上的 GetComponent 返回 Null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38170547/

相关文章:

c# - 在 XML 文件中包含二进制数据

c# - CodeContract.Requires(param != null) 不能证明 param 不会为 null?

c# - Google Play 服务错误集成(无法注册类(class))

c# - 遍历事件日志条目集合,IndexOutOfBoundsException

c# - 查找datagridview复选框值时如何停止空引用异常?

c# - 在 C# 中查找闭合形状

C# DLL 导出到 Inno-Setup - 错误 E0434F4D

unity3d - unity Rigidbody2d 不与其他 Rigidbody2ds 交互

c# - 订阅 Func 事件后不会调用协程方法

c# - 无法理解为什么我会收到 NullReferenceException