Menu
CoddyTech

Vòng lặp lồng nhau

Thuộc phần Những kiến thức cơ bản về lập trình trong Unity trong hành trình Unity của Coddy. Bài học 38 trên 85.

Một hàng cần một vòng lặp. Cả tầng gồm các hàng và cột cần một vòng lặp bên trong một vòng lặp:

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

Với mỗi lần lặp của vòng lặp bên ngoài, vòng lặp bên trong chạy hết các lượt. Vì vậy, đoạn code này in ra 0, 0 và 0, 1, rồi đến 1, 0 và 1, 1, sau đó là 2, 0 và 2, 1: 3 cột nhân với 2 hàng, tổng cộng 6 dòng.

Hai vòng lặp cần bộ đếm có tên khác nhau. Ở đây, chúng được đặt tên theo thứ mà chúng đếm, column và row, giúp đoạn code dễ đọc hơn so với i và j.

challenge icon

Thử thách

Trung bình

Lát một mặt sàn gồm 12 viên gạch: 4 cột, 3 hàng.

  1. Trong Start(), thay PlaceTile(0, 0); bằng for (int column = 0; column < 4; column++).
  2. Bên trong dấu ngoặc nhọn của vòng lặp, viết for (int row = 0; row < 3; row++), rồi gọi PlaceTile(column, row); bên trong vòng lặp lồng nhau đó.

Nhấn “Chơi”: mặt sàn gồm 4 cột và 3 hàng gạch sẽ xuất hiện. Sau đó nhấn “Kiểm tra”.

Tự làm thử

using UnityEngine;

public class TileFloor : MonoBehaviour
{
    void Start()
    {
        // Xếp các ô gạch thành 4 cột và 3 hàng.
        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);
    }
}

Tất cả bài học trong Những kiến thức cơ bản về lập trình trong Unity

Tự luyện tập: Playground Unity