2014-06-06 6 views
1

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

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"); 

} 

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

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

+0

Как насчет 'Thread.Sleep (1000)'? –

ответ

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); 
    } 
} 
Смежные вопросы