Unity中IEnumerator WaitForSeconds的问题

时间:2014-06-06 19:28:00

标签: c# unity3d wait ienumerator

所以我试图在一个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&#34;到目前为止...&#34;然后4&#34;那么好&#34;。它不等待1秒然后输出那么好。

我一直在阅读这篇文章,而且很难让剧本暂停一秒钟!我做错了什么?

1 个答案:

答案 0 :(得分: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);
    }
 }