Unity c#Destroy未将目标设置为null

时间:2017-11-09 02:24:11

标签: c# unity3d null gameobject

我遇到的问题是,目标在被销毁时不会设置为null。相反,团结说缺少(游戏对象)(见Picture)。

在我的敌人类中,我有一个属性health。如果health <= 0,则会调用Destroy(gameObject)

 public void LocateTarget()
 {
     if (Target == null)
     {
         // target has been destroyed or out of range
         CancelInvoke("CreateBullet");
         Debug.Log("Hold fire");
         // locate a new target
         Target = GameObject.FindGameObjectWithTag("Enemy");
     }

     if (Target != null)
     {
         // Shoot at target
         ShootAtTarget();
     }
 }

 public void ShootAtTarget()
 {
     if (IsInvoking("CreateBullet") == false)
     {
         InvokeRepeating("CreateBullet", 0f, 1f);
         Debug.Log("Starting to fire");
     }
 }

3 个答案:

答案 0 :(得分:0)

试试这个

if(Target == null || Target.Equals(null)
{
     // target has been destroyed or out of range
     CancelInvoke("CreateBullet");
     Debug.Log("Hold fire");
     // locate a new target
     Target = GameObject.FindGameObjectWithTag("Enemy");
}

答案 1 :(得分:0)

显式清空您正在销毁的对象的所有引用。 在你的情况下,你必须在销毁gameobject之前将目标veriable设置为null。

答案 2 :(得分:0)

我感到难以置信的愚蠢。我在启动时调用了我的locatetarget函数而不是更新。谢谢大家的帮助。