Menu
CoddyTech

Cicli annidati

Fa parte della sezione Fondamenti di scripting in Unity del percorso Unity di Coddy. Lezione 38 di 85.

Una riga richiede un ciclo. Un intero piano, con righe e colonne, richiede un ciclo dentro un ciclo:

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

Per ogni iterazione del ciclo esterno, il ciclo interno viene eseguito fino in fondo. Quindi stampa 0, 0 e 0, 1, poi 1, 0 e 1, 1, poi 2, 0 e 2, 1: 3 colonne per 2 righe, 6 righe in tutto.

I due cicli hanno bisogno di contatori con nomi diversi. Qui prendono il nome da ciò che contano, column e row, il che rende il codice più facile da leggere rispetto a i e j.

challenge icon

Sfida

Medio

Disponi un pavimento di 12 piastrelle: 4 colonne, 3 righe.

  1. In Start(), sostituisci PlaceTile(0, 0); con for (int column = 0; column < 4; column++).
  2. All'interno delle sue parentesi graffe, scrivi for (int row = 0; row < 3; row++) e chiama PlaceTile(column, row); all'interno di questo ciclo interno.

Premi «Gioca»: apparirà un pavimento di 4 per 3 piastrelle. Poi premi «Verifica».

Provalo tu

using UnityEngine;

public class TileFloor : MonoBehaviour
{
    void Start()
    {
        // Disponi 4 colonne e 3 righe di piastrelle.
        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);
    }
}

Tutte le lezioni di Fondamenti di scripting in Unity

Esercitati da solo: Playground Unity