Menu
CoddyTech

グリッド状に生成

CoddyのUnityジャーニー「Unityスクリプティングの基礎」セクションの一部。レッスン 50/67。

ループをループの中に入れると、グリッドのすべてのセルを訪れます。外側のループが列を選び、内側のループがその列に沿って進みます。その中に Instantiate を入れると、すべてのセルにオブジェクトが作られます。これで、幅が2ユニットのタイルを使って3×3の床を作るため、タイル同士は2ユニット間隔になります。

public GameObject tilePrefab;

void Start()
{
    for (int x = 0; x < 3; x++)
    {
        for (int z = 0; z < 3; z++)
        {
            Vector3 spot = new Vector3(x * 2, 0, z * 2);
            Instantiate(tilePrefab, spot, Quaternion.identity, transform);
        }
    }
}

タイルは x = 0, 2, 4、z = 0, 2, 4 の位置に配置されます。全部で9個あり、(0, 0, 0)から(4, 0, 4)まで並びます。ループは Start() で一度だけ実行されます。Update() に入れると、フレームごとにタイルがさらに9個追加されます。

4番目の引数は親です。親のない Tile(Clone) オブジェクトが9個あるとHierarchyが散らかりますが、transform を渡すと、これらはこのスクリプトが付いているオブジェクトであるFloorの下にまとめられます。そのため、折りたたんだり、まとめて移動したり、まとめて削除したりできます。渡す位置は、引き続きワールド座標です。

challenge icon

チャレンジ

中級

地面に設置する、Brick プレハブを使った幅4個・高さ5段のレンガの壁を作りましょう。レンガの幅は1単位、高さは0.5単位です。

  • 4列の位置は x = -1.5、-0.5、0.5、1.5 です。
  • 一番下の段は地面に接するため、レンガの y 座標は 0.25 です。各段は、1つ下の段から0.5上に配置します。
  • すべてのレンガは z = 0 に配置し、回転させず、このスクリプトが付いているオブジェクトである Wall の子オブジェクトにします。

Play を押して壁を確認し、その後 Check を押してください。

自分で試してみよう

using UnityEngine;

public class WallBuilder : MonoBehaviour
{
    public GameObject brickPrefab;

    void Start()
    {
        // レンガを4列×5行に配置し、それぞれをこのWallの子にする
    }
}
quiz icon腕試し

このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。

Unityスクリプティングの基礎のすべてのレッスン