Вторник, 04 Августа 2020, 08:37

Приветствую Вас Гость

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 1 из 1
  • 1
Модератор форума: beril  
Форум игроделов » Движки для разработки игр и сложные системы разработки » Unity » Удаление объекта из массива
Удаление объекта из массива
labinzevvДата: Пятница, 31 Июля 2020, 20:18 | Сообщение # 1
был не раз
Сейчас нет на сайте
Всем привет. Следующий вопрос:
есть массив 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();                    
        }         
    }           
}


3d modeling, unfolding, and texturing. My works: https://vk.com/labinzevv

Сообщение отредактировал labinzevv - Пятница, 31 Июля 2020, 20:19
Форум игроделов » Движки для разработки игр и сложные системы разработки » Unity » Удаление объекта из массива
  • Страница 1 из 1
  • 1
Поиск:

Все права сохранены. GcUp.ru © 2008-2020
free games download
Рейтинг