C#Unity3D中未分配的引用异常

时间:2014-07-27 20:50:55

标签: c# unity3d

  1. 我有一个播放器类,我正在更新名为Target的转换,而目标属于Projectile类。
  2. 这就是我所做的,通过它可以正常工作:

    _pro.Target.transform.position = new Vector3(posi.x, posi.y, posi.z);  //value gets assigned to Target here
    Instantiate (bulletprefab, position, Quaternion.identity);  //projectile is attached to bulletprefab so projectile gets called from here
    

    现在,在射弹中,在试图访问Target.transform.position时,它会给出UnassignedReferenceException:还没有分配射弹的变量'Target'。

    我在玩家类中成功为Target分配了值,如何在投射中访问相同的值?

1 个答案:

答案 0 :(得分:1)

您的主要问题是您在实例化包含该变量的对象之前尝试更新变量的值。

由于您的Projectile类具有对目标的引用,因此首先需要引用Projectile类实例。

然后实例化您的对象,然后找到Projectile类。

GameObject g = Instantiate (bulletprefab, position, Quaternion.identity) as GameObject;
Projectile p = g.GetComponent<Projectile>();

然后使用您对炮弹的新参考来将值赋予目标。

p.SetTarget(target.transform.position);

您也可以使用SendMessage来解决同样的问题。

GameObject g = Instantiate (bulletprefab, position, Quaternion.identity) as GameObject;
g.SendMessage("SetTarget", target.transform.position);

在这两种情况下,我假设你有一个名为SetTarget的函数,它允许你在Projectile类中设置目标。