Unityでゲームオブジェクトを碁盤目状に並べるスクリプト
Unityで、ゲームオブジェクトを碁盤目状に並べるスクリプト。
Play Mode Save を併用すれば、並べた結果を保存することもできる。
Play Mode Save | ユーティリティ ツール | Unity Asset Store
using UnityEngine; public class GridPlacer : MonoBehaviour { public GameObject[] objects; // 並べるオブジェクトの配列 public int rows = 4; // 行数 public int columns = 4; // 列数 public float spacing = 2f; // 間隔 void Start() { float xOffset = columns / spacing; float zOffset = rows / spacing; int index = 0; for (int i = 0; i < rows; i++) { for (int j = 0; j < columns; j++) { float xPos = j - xOffset; float zPos = i - zOffset; // x, z軸でspacingずつ距離をあけて並べる objects[index].transform.position = new Vector3(xPos * spacing, 0f, zPos * spacing); index++; if (index >= objects.Length) { return; } } } } }
【使い方】
- 上記をコピペしてC#スクリプトとしてプロジェクトに追加
- シーンに新規ゲームオブジェクトを追加
- これ(Grid Placer)をコンポーネントとしてアタッチ
- 並べたいプレハブなどをゲームオブジェクトとしてシーンに追加して、上記でアタッチした Grid Placer の Objects にまとめて追加する。
- シーンの上の再生ボタンでゲームプレイを実行。
Inspectorの右上の鍵をクリックすると画面ロックがかかるので、Grid Placerのゲームオブジェクトを選択した状態で一度ロックして、並べたいオブジェクトを範囲選択してドラッグ&ドロップすると高速です。
Play Mode Save を併用して結果を保存する場合
上記手順の後、位置を保存したいゲームオブジェクトをすべて選択し、Inspector の Transform コンポーネントの点々を右クリック、なんかSave的なやつを選んで保存してからゲーム停止。
VRChat用に作ったアバターの着せ替えが30種を超えており、全部をシーン上で一気に確認しないといけないことがまれによくあるため、いいかんじに碁盤目状に並べられないかとChat GPTと一緒に作りました。