Menu
CoddyTech

嵌套循环

本课属于 Coddy Unity 学习旅程的“Unity 脚本基础”单元。第 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 在线编辑器