Menu
CoddyTech

Циклы внутри циклов

Часть раздела Основы скриптинга в Unity путешествия по Unity на Coddy. Урок 38 из 85.

Для ряда нужен один цикл. Для целого этажа из рядов и столбцов нужен цикл внутри цикла:

for (int column = 0; column < 3; column++)
{
    for (int row = 0; row < 2; row++)
    {
        Debug.Log(column + ", " + row);
    }
}

При каждом проходе внешнего цикла внутренний цикл выполняется до конца. Поэтому выводятся 0, 0 и 0, 1, затем 1, 0 и 1, 1, затем 2, 0 и 2, 1: 3 столбца умножить на 2 ряда — всего 6 строк.

У двух циклов должны быть счётчики с разными именами. Здесь они названы по тому, что считают: column и row. Так код легче читать, чем если бы использовались i и j.

challenge icon

Задание

Средне

Выложи пол из 12 плиток: 4 столбца, 3 ряда.

  1. В Start() замени PlaceTile(0, 0); на for (int column = 0; column < 4; column++).
  2. Внутри его фигурных скобок напиши for (int row = 0; row < 3; row++) и вызови PlaceTile(column, row); внутри этого внутреннего цикла.

Нажми «Играть»: появится пол из 4 на 3 плитки. Затем нажми «Проверить».

Попробуйте сами

using UnityEngine;

public class TileFloor : MonoBehaviour
{
    void Start()
    {
        // Разместите плитки в 4 столбца и 3 ряда.
        PlaceTile(0, 0);
    }

    void PlaceTile(int column, int row)
    {
        GameObject tile = GameObject.CreatePrimitive(PrimitiveType.Cube);
        tile.name = "Tile";
        tile.transform.position = new Vector3(column * 1.1f - 1.65f, 0.1f, row * 1.1f);
        tile.transform.localScale = new Vector3(1, 0.2f, 1);
        tile.GetComponent<Renderer>().material.color = new Color(0.85f, 0.85f, 0.9f);
    }
}

Все уроки раздела Основы скриптинга в Unity

Потренируйтесь самостоятельно: Песочница Unity