所以我试图在一个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秒然后输出那么好。
我一直在阅读这篇文章,而且很难让剧本暂停一秒钟!我做错了什么?
答案 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);
}
}