@Default_Nickname

The object of type has been destroyed but you're still trying to acess it, что делать?

637f5ee090a11107799924.png
змейка устроена так, чтобы каждые 0.5 сек создавались префабы хвоста и удалялись через [длина змейки] / 2 секунд

Вот скрипт хвоста:
public float x;
    
    private void Start()
    {
        x = Head_Movement.length / Head_Movement.speed;
        Head_Movement.startWaiting += A;  //в скрипте "Head_Movement" есть статическая функция "startWaiting"
    }
    
    IEnumerator _Del()            //корутина, объект ждет х секунд и уничтожается, затем корутина останавливается.
    {        
        yield return new WaitForSeconds(x);
        Destroy(this.gameObject);
        StopCoroutine(_Del());
    }

    void A()         //этот метод нужен просто чтобы привязать его к функции startWaiting, когда функция вызывается,
    {         
        StartCoroutine(_Del());
    }


В скрипте Head_Movement каждые 0.5 сек вызывается функция startWaiting.
После того, как один префаб был удален и игра пытается удалить еще один, то выдается ошибка, что объект уже был уничтожен.
  • Вопрос задан
  • 52 просмотра
Решения вопроса 1
@lucky_guy228
Ты после выполнения операции Destroy вызываешь StopCoroutine, а должно быть наоборот сначала остановка корутины, потом только дестрой
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
GavriKos
@GavriKos Куратор тега Unity
Удаляете что то не то. Надо дебажить.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы