Menu
CoddyTech

Pętle wewnątrz pętli

Część sekcji Podstawy skryptów w Unity ścieżki Unity w Coddy. Lekcja 38 z 85.

Jeden wiersz wymaga jednej pętli. Całe piętro, czyli wiersze i kolumny, wymaga pętli wewnątrz pętli:

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

Przy każdym przebiegu pętli zewnętrznej pętla wewnętrzna wykonuje się do końca. W efekcie wypisuje 0, 0 i 0, 1, potem 1, 0 i 1, 1, a następnie 2, 0 i 2, 1: 3 kolumny razy 2 wiersze, łącznie 6 linii.

Obie pętle potrzebują liczników o różnych nazwach. Tutaj nazwano je zgodnie z tym, co zliczają: column i row. Dzięki temu kod jest łatwiejszy do odczytania niż w przypadku nazw i i j.

challenge icon

Wyzwanie

Średni

Ułóż podłogę z 12 płytek: 4 kolumny, 3 wiersze.

  1. W Start() zastąp PlaceTile(0, 0); przez for (int column = 0; column < 4; column++).
  2. W nawiasach klamrowych tej pętli napisz for (int row = 0; row < 3; row++) i wywołaj PlaceTile(column, row); wewnątrz tej pętli.

Naciśnij „Graj”: pojawi się podłoga z 4 na 3 płytek. Następnie naciśnij „Sprawdź”.

Spróbuj swoich sił

using UnityEngine;

public class TileFloor : MonoBehaviour
{
    void Start()
    {
        // Ułóż płytki w 4 kolumnach i 3 rzędach.
        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);
    }
}

Wszystkie lekcje w sekcji Podstawy skryptów w Unity

Poćwicz samodzielnie: Edytor online Unity