Всем привет. Следующий вопрос:
есть массив GameObject[] mChased (используется для преследования)
В определенный момент объекты из массива удаляются, после этого ошибка:
MissingReferenceException: The object of type 'Transform' has been destroyed but you are still trying to access it.
Your script should either check if it is null or you should not destroy the object.
UnityEngine.Transform.get_position () (at <d1422b3fc93746018c92eda852993b93>:0)
controlWolf.Update () (at Assets/Scripts/controlWolf.cs:100)
Вопрос: как из массива удалить поля missing, чтобы избежать ошибки
Пробовал в update запускать цикл for, который заново заполняет массив, ошибка исчезает но в этом случае
объект который потерял цель преследования перестаёт работать вообще.
Подскажите решение плиз.
Вот скрипт:
Код
public Transform[] chased;
public Transform[] patrolPoint;
public GameObject[] mChased = { };
public GameObject[] mPoint = { };
void Start()
{
mChased = GameObject.FindGameObjectsWithTag("characters");
chased = new Transform[mChased.Length];
for (int i = 0; i < mChased.Length; i++)
{
chased[i] = mChased[i].transform;
}
mPoint = GameObject.FindGameObjectsWithTag("point");
patrolPoint = new Transform[mPoint.Length];
for (int i = 0; i < mPoint.Length; i++)
{
patrolPoint[i] = mPoint[i].transform;
}
randomPoint = Random.Range(0, patrolPoint.Length);
randomchased = Random.Range(0, chased.Length);
}
void Update()
{
if (chased[0] == false)
{
Patroling();
wolf.SetBool("wolf_attack", false);
wolf.SetBool("wolf_walk", true);
}
float distance = Vector3.Distance(chased[randomchased].position, transform.position);
if (distance > chaseRadius)
{
Patroling();
}
else if (distance <= chaseRadius)
{
ChasePlayer();
}
}
}