我遇到的问题是,目标在被销毁时不会设置为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");
}
}
答案 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函数而不是更新。谢谢大家的帮助。