 
    Циклы в Unity — это способ повторять действия в коде: например, запускать врагов по очереди, перебирать предметы в инвентаре или ждать, пока что-то произойдёт. Они позволяют не копировать один и тот же код много раз, а сделать это автоматически, сколько нужно.
        В C# и Unity есть несколько видов циклов: for,
        while, foreach. Каждый из них работает чуть
        по-своему, но суть одна: повторять, пока выполняется
        какое-то условие.
      
          Цикл for — это способ повторить один и тот же код
          несколько раз. Мы говорим компьютеру: начни с какого-то значения,
          проверяй условие, и каждый раз меняй счётчик. Например: «повтори 10
          раз», или «пройди по всем элементам от 0 до 5».
        
Такой цикл особенно удобен, когда мы заранее знаем, сколько раз нужно что-то сделать — например, создать 5 врагов, посчитать очки или нарисовать 10 платформ.
 
using UnityEngine;
public class CSharpScript : MonoBehaviour
{
  // Start вызывается один раз при запуске объекта
  void Start()
  {
    // Повторяем 5 раз
    for (int i = 0; i < 5; i++)
    {
      Debug.Log("Итерация №" + i);
    }
  }
  // Update вызывается каждый кадр
  void Update()
  {
    
  }
} 
          В этом примере мы запускаем цикл for, который повторяется
          5 раз. Переменная i начинается с 0, и каждый раз
          увеличивается на 1. Пока i меньше 5 — цикл продолжается,
          и мы выводим номер итерации в консоль.
        
Так работает большинство простых повторений в Unity: можно перебирать уровни, создавать объекты, проверять массивы и многое другое.
          Цикл while выполняется,
          пока условие остаётся истинным. Это как проверка
          перед каждым шагом: если условие true — продолжаем, если
          false — выходим из цикла.
        
Такой цикл удобно использовать, когда не знаешь заранее, сколько раз нужно повторить: например, ждать, пока игрок дойдёт до цели, или пока не нажата кнопка выхода.
 
using UnityEngine;
public class CSharpScript : MonoBehaviour
{
  int energy = 3;
  // Start вызывается один раз при запуске объекта
  void Start()
  {
    // Пока энергия больше нуля — повторяем
    while (energy > 0)
    {
      Debug.Log("Осталось энергии: " + energy);
      energy--;
    }
  }
  // Update вызывается каждый кадр
  void Update()
  {
  }
} 
          В этом примере цикл while повторяется, пока
          energy больше нуля. На каждом шаге мы выводим значение в
          консоль и уменьшаем energy на единицу.
        
          Как только energy станет равной нулю — условие больше не
          выполняется, и цикл останавливается. Такой подход часто используют,
          когда количество повторений зависит от состояния — например, пока есть
          патроны или пока враг жив.
        
while в Unity!
          
            Если условие никогда не станет false — цикл будет
            бесконечным, и Unity может зависнуть или крашнуться. Это особенно
            опасно, если цикл запускается в Update().
          
Всегда убедись, что внутри цикла меняется переменная, от которой зависит условие. Или поставь ограничитель — например, максимум 100 итераций, если не уверен.
 
using UnityEngine;
public class CSharpScript : MonoBehaviour
{
  int energy = 10;
  // Start вызывается один раз при запуске объекта
  void Start()
  {
    while (true)
    {
      if (energy <= 0)
      {
        Debug.Log("Энергия закончилась — выходим из цикла");
        break; // Прерываем цикл
      }
      Debug.Log("Осталось энергии: " + energy);
      energy--;
    }
  }
  // Update вызывается каждый кадр
  void Update()
  {
  }
} 
            Здесь цикл while (true) выглядит как бесконечный, но
            внутри него есть проверка: если energy меньше или равна
            нулю — команда break прерывает выполнение цикла.
          
Это полезный приём, если цикл должен идти «до тех пор, пока...» — но ты не знаешь точно, когда это произойдёт. Главное — не забыть условие выхода!
          Цикл foreach позволяет пройтись по всем элементам в
          коллекции: массиве, списке или любом другом наборе. Он автоматически
          берёт каждый элемент по очереди — не нужно считать вручную, как в
          for.
        
Это особенно удобно, когда тебе не важен номер элемента, а нужно просто перебрать всё подряд: всех врагов, все кнопки, все предметы в инвентаре.
 
using UnityEngine;
public class CSharpScript : MonoBehaviour
{
  string[] names = { "Аня", "Боб", "Соня", "Мистер Ёж" };
  // Start вызывается один раз при запуске объекта
  void Start()
  {
    foreach (string name in names)
    {
      Debug.Log("Имя: " + name);
    }
  }
  // Update вызывается каждый кадр
  void Update()
  {
  }
} 
          В этом примере мы используем foreach, чтобы пройтись по
          массиву names. На каждом шаге переменная
          name автоматически получает следующее значение из массива
          — сначала "Аня", потом "Боб", потом "Соня", и, конечно,
          Мистер Ёж.
        
          Такой подход удобен, когда нужно просто перебрать все элементы без
          счётчиков.
          foreach делает это просто и читабельно.