Я работаю в Unity3D, C# специально, и я пытаюсь написать цикл For, который создает несколько игровых объектов в 1 цикле, но я хочу немного пошатнуть их экземпляр, скажем, 0,5 секунд, прежде чем будет создан экземпляр следующего игрового объекта.Unity3d - Coroutine in for Loop
Я полагал, что это будет так просто, как делать нормальный цикл:
for (int i = 0; i <= 3; i++)
{
Instantiate(gameObject, objectSpawn[i].transform.position, Quaternion.identity);
StartCoroutine(WeaponsCooldown(6));
}
StartCoroutine(WeaponsCooldown(2));
и в моем couroutine я иметь дело выключатель, так что я могу использовать его несколько раз (кажется, несколько жестких точек на корабле или что-то)
IEnumerator WeaponsCooldown(int coolTrigger)
{
switch (coolTrigger)
{
case 1:
mainFire = true;
yield return new WaitForSeconds(5);
mainFire = false;
break;
case 2:
leftFire = true;
yield return new WaitForSeconds(3);
leftFire = false;
break;
...down to case 6 (for this project)
результаты, которые я получаю таким образом: StartCoroutine, что находится вне для петлевых пожаров просто отлично - это мастер восстановления для этого оружия и удерживает игрока от спама обжиг. Однако startcoroutine внутри цикла for, похоже, не замедляет цикл for any, и я так новичок в сценариях Unity3D и C#. Я не совсем уверен, как это сделать.
Я предполагаю, что StartCoroutine представляет собой отдельный поток, который проходит в стороне от потока Update, и поэтому цикл For продолжается, потому что он не ждет завершения сопрограммы.
Если это так, то будет кто-нибудь есть какие-либо идеи (кроме ввода отдельных сценариев на каждую жесткой точку игрока и настроек ошеломляющего времени запуска (или объект игры экземпляр задержки) на каждом из них?
Безусловно, основного Причина, по которой я хотел сделать все это в 1 скрипте, состоит в том, что у игрока может быть более 25 жестких очков, и это значительно упростит повторное использование на нескольких кораблях с меньшим количеством трудных точек и будет легче управлять лично для меня позже.
Благодарим вас за любую информацию, предлагаемую заранее, Nick Willcox
Я чувствую себя очень глупо не попробовав это уже ... Я дам это сегодня и отвечу назад, но я хотел бы сделать короткую секунду, чтобы поблагодарить вас за то время, которое вы вложили в ответ, и разбив различные разделы моего запроса. Большое вам спасибо, и я проведу это как можно скорее. –
Маркировка как полная/лучший ответ. Он полностью работает !!! Woo! Спасибо большое! Я боролся с этим уже несколько дней. ><. lol Большое спасибо Heisenbug. –