对象引用未设置为Unity中对象的实例

时间:2015-01-16 07:34:31

标签: c# unity3d runtime-error

我正在Unity的冒险游戏中遇到这个小错误。我正在尝试访问实例化对象中的脚本。以下是相关的代码行:

    public void CastAbility(Vector3 targetLocation) {
    print (targetLocation);
    var target = Instantiate (prefab2, transform.position, transform.rotation) as GameObject;
    Initialize initialize = target.GetComponent<Initialize> ();
    initialize.targetLocation = targetLocation;
}

根据我的理解,第一行代码将创建一个名为prefab2的游戏对象。 第二行代码将允许我访问prefab2中的组件(A脚本)。 第三行将改变prefab2脚本中的变量。

这对我来说似乎合乎逻辑,但是我得到了一个 “对象引用未设置为对象的实例”错误。

以下是一些细节,如果这有助于找到解决方案。

  1. 如果我只使用Instantiate,并省略了target.GetComponent,prefab2将会产生并且不会给我任何错误......事实上,附加到prefab2的Initialize脚本工作正常。

  2. 我从实例化的子对象调用CastAbility函数。

  3. 我尝试过去4个小时找到解决方案,但无济于事。 任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:1)

我找到了解决方案,游戏对象被存储为变换,而不是游戏对象。这让我感到困惑,因为我正在运行的类似脚本也使用了转换(工作得很好)。