Menu
CoddyTech

ループの入れ子

CoddyのUnityジャーニー「Unityスクリプトの基礎」セクションの一部。レッスン 38/85。

1行には1つのループが必要です。行と列からなるフロア全体には、ループの中にループが必要です。

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

外側のループが1回実行されるたびに、内側のループは最後まで実行されます。つまり、0, 0 と 0, 1、次に 1, 0 と 1, 1、そして 2, 0 と 2, 1 が出力されます。列3つ×行2つで、合計6行です。

2つのループには、それぞれ異なる名前のカウンターが必要です。ここでは、数える対象に合わせて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プレイグラウンド