Menu
CoddyTech

Bucles dentro de bucles

Parte de la sección Fundamentos de scripting en Unity del Journey de Unity de Coddy. Lección 38 de 85.

Una fila necesita un bucle. Un piso entero, con filas y columnas, necesita un bucle dentro de otro:

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

En cada vuelta del bucle externo, el bucle interno se ejecuta hasta el final. Así que esto escribe 0, 0 y 0, 1, después 1, 0 y 1, 1, después 2, 0 y 2, 1: 3 columnas por 2 filas, 6 líneas en total.

Los dos bucles necesitan contadores con nombres diferentes. Aquí reciben nombres según lo que cuentan, column y row, lo que hace que el código sea más fácil de leer que i y j.

challenge icon

Desafío

Intermedio

Coloca un suelo de 12 baldosas: 4 columnas y 3 filas.

  1. En Start(), sustituye PlaceTile(0, 0); por for (int column = 0; column < 4; column++).
  2. Dentro de sus llaves, escribe for (int row = 0; row < 3; row++) y llama a PlaceTile(column, row); dentro de ese bucle interno.

Pulsa «Jugar»: aparece un suelo de 4 por 3 baldosas. Después, pulsa «Comprobar».

Pruébalo tú mismo

using UnityEngine;

public class TileFloor : MonoBehaviour
{
    void Start()
    {
        // Coloca 4 columnas y 3 filas de baldosas.
        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);
    }
}

Todas las lecciones de Fundamentos de scripting en Unity

Practica por tu cuenta: Playground de Unity