Проблемы с IEnumerator WaitForSeconds в Unity

Итак, я пытаюсь уничтожить врагов в цикле while, ожидая 1 секунду между ними (могут ли они немного усложнить ожидание??). Проблема в том, что все враги уничтожаются одновременно, они не ждут WaitForSEconds. В моем цикле while я вызываю каждого врага по его тегу, который идет от Enemy1 до Enemy5. Вот мой код.

void OnTriggerEnter(Collider otherObject)
{


    int i=1;
    while (i<=numenemies)
    {
        string tag="Enemy"+i;
        destroyenemy=GameObject.FindGameObjectWithTag(tag);
        Destroy(destroyenemy);
        i++;
        StartCoroutine(DestroyWait ());


    }   
 }
 IEnumerator DestroyWait()
 {
   Debug.Log ("so far...");
   yield return new WaitForSeconds (1);
   Debug.Log ("so good");

 }

В моей консоли из моего журнала отладки я получаю 4 «пока что ...», а затем 4 «так хорошо». это не ожидание 1 секунды, а затем вывод так хорошо.

Я читал об этом, и, чувак, так сложно просто приостановить сценарий на 1 секунду! Что я делаю не так?


person Prof    schedule 06.06.2014    source источник
comment
@YuvalItzchakov нет, это остановит игру   -  person TimChang    schedule 05.08.2019


Ответы (1)


Переместите весь свой код внутрь сопрограммы:

void OnTriggerEnter(Collider otherObject)
{
    StartCoroutine(DestroyAllEnemies());
}

IEnumerator DestroyAllEnemies()
{
    for(int i = 1; i<=numenemies;i++)
    {
        string tag="Enemy"+i;
        destroyenemy=GameObject.FindGameObjectWithTag(tag);
        Destroy(destroyenemy);
        yield return new WaitForSeconds (1);
    }
 }
person Alberto    schedule 09.06.2014