嵌套循环
本课属于 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 更容易读懂代码。
挑战
中等铺设一个由 12 块瓷砖组成的地板:4 列,3 行。
- 在
Start()中,将PlaceTile(0, 0);替换为for (int column = 0; column < 4; column++)。 - 在它的大括号内,写入
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 在线编辑器