WasTabon
@WasTabon

Почему не работает цикл for?

public IEnumerator Spawning()
    {
        for (int i = 0; i < 3; i++)
        {
            Debug.Log(i);
            if (i == 3)
            {
                Debug.Log("Stopped!");
                StopCoroutine("Spawning");
                Destroying();
            }    
            yield return new WaitForSeconds(1);
            int plNumber = Random.Range(0, platforms.Length);
            float posX = Random.Range(-7f, 7f);
            float posY = Random.Range(-4f, 4f);
            Vector3 vector3 = new Vector3(posX, posY, 0);
            Instantiate(platforms[plNumber], vector3, Quaternion.identity);
        }
    }
}

После того как создалось 3 объекта должен вызываться метод Destroying();, но какие я бы числа не подбирал оно вообще не работает почему-то
  • Вопрос задан
  • 763 просмотра
Решения вопроса 1
space2pacman
@space2pacman
Просто царь.
Почему не работает цикл for? - работает.

0 < 3 ? true
1 < 3 ? true
2 < 3 ? true
3 < 3 ? false - цикл останавливается.

Шаги выполнения:
1) Условие
2) Тело цикла
3) Инкрементация
4) go to 1)


i <= 3 или if (i == 2)
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
@youkerni
Unity3D developer
Скорее всего вы неверно стартуете корутину.

Полагаю вы делаете
Spawning();
вместо
StartCoroutine(Spawning());

А вообще я бы рекомендовал стартовать корутины следующим образом:
spawningRoutine = Spawning();
StartCoroutine(spawningRoutine);


Плюс этого подхода в том, что вы всегда имеете ссылку на текущую запущенную корутину и можете при необходимости остановить именно ее. (StopAllCoroutines убивает все корутины)
Ответ написан
freeExec
@freeExec
Участник OpenStreetMap
Размести Destroying(); за циклом.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы