Я получаю вышеуказанную ошибку, и я попытался использовать debug.log для печати, где ошибка.Я создаю тип танка объект.который огонь в какой-то конкретный объект.Созданный объект является атакующим.
В обновлении я использую цикл foreach для циклического прохождения всех созданных объектов.Если объект найден и объект находится в зоне пожара.
void Update () {
if (attacker!= null )
{
//Debug.Log("inside att");
attacker = FindObjectsOfType<Attacker>();
}
// fire only if attacker is in range
if (IfInRange() && attacker!= null && running)
{
faceTowardTarget();
Fire();
}
}
bool IfInRange()
{// run through all the instantiated attacker
foreach (Attacker currentAttacker in attacker)
Это работает нормально, но иногда дает выше. В конце консоли цикл продолжается и включается, а currentAttacker в конце равен нулю.Я пытался напечатать это в консоли.но это не входит в другое, если утверждение
{ //if attacker is in range
if (attacker != null )
{
Debug.Log(currentAttacker.GetComponent<Health>().isAlive);
if (Vector2.Distance(transform.position, currentAttacker.transform.position) < minDistance)
{
attackerPos = currentAttacker.transform;
return true;
}
}
if (currentAttacker == null)
{
Debug.Log("curre Attacker null");
running = false;
return false;
}
}return false;
}
У атакующего есть простой сценарий здоровья, который наносит урон при попадании снаряда.
Void update()
{
if (health <= 0)
{
**is there any better way to destroy an obj. If i destroy gameObject that error appear and it get stuck in foreach loop**
// Destroy(gameObject);
noOfKilled++;
isAlive = false;
scoreHolder.addScore(scoreValue);
}
}
Большое спасибоза помощь.Я пытался найти, но не смог решить эту проблему.