WaitForSeconds не работает
создаю игру на основе тетриса для чего нужна coroutina но функция WaitForSeconds проигрывается слишком быстро
void Update () {
StartCoroutine(GenerateFigure());
}
IEnumerator GenerateFigure () {
yield return new WaitForSeconds(0.5f);
Instantiate(
Generate(), //функция которая выдаёт рандомную фигуру
new Vector3(0f, 3f, 0f),
Quaternion.identity
);
}
Ответы (2 шт):
Автор решения: SOOBATON
→ Ссылка
Как по мне проще использовать метод Invoke()
Так как используемому варианту я не очень доверяю, а через Invoke() гораздо проще. Нужно просто запихнуть необходимую команду(ы) в функцию и выполнить её через этот метод. (p.s. Я сам использую данный метод)
В вашем случае
void ObjGenerate() {
Instantiate(
Generate(), //функция которая выдаёт рандомную фигуру
new Vector3(0f, 3f, 0f),
Quaternion.identity
);
}
void Update () {
StartCoroutine(GenerateFigure());
}
IEnumerator GenerateFigure () {
Invoke("ObjGenerate", 2f); //первое значение это функция которая выполнится, а второе значение это задержка в секундах
}
Надеюсь помог
Автор решения: Sindy Pinn
→ Ссылка
Попробуй изменить свой код так. Должно получиться то, что ты хочешь
private void Start()
{
StartCoroutine(GenerateFigure());
}
private IEnumerator GenerateFigure()
{
while(true)
{
yield return new WaitForSeconds(0.5f);
Instantiate(
Generate(), //функция которая выдаёт рандомную фигуру
new Vector3(0f, 3f, 0f),
Quaternion.identity
);
}
}