プラベのVRChatブログ

VRChatで楽しく過ごすためのTipsをまとめてます。

Unityでゲームオブジェクトを碁盤目状に並べるスクリプト

改善版
purabeworks.booth.pm

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;
                }
            }
        }
    }
}

【使い方】

  1. 上記をコピペしてC#スクリプトとしてプロジェクトに追加
  2. シーンに新規ゲームオブジェクトを追加
  3. これ(Grid Placer)をコンポーネントとしてアタッチ
  4. 並べたいプレハブなどをゲームオブジェクトとしてシーンに追加して、上記でアタッチした Grid Placer の Objects にまとめて追加する。
  5. シーンの上の再生ボタンでゲームプレイを実行。

Inspectorの右上の鍵をクリックすると画面ロックがかかるので、Grid Placerのゲームオブジェクトを選択した状態で一度ロックして、並べたいオブジェクトを範囲選択してドラッグ&ドロップすると高速です。

Play Mode Save を併用して結果を保存する場合
上記手順の後、位置を保存したいゲームオブジェクトをすべて選択し、Inspector の Transform コンポーネントの点々を右クリック、なんかSave的なやつを選んで保存してからゲーム停止。

VRChat用に作ったアバターの着せ替えが30種を超えており、全部をシーン上で一気に確認しないといけないことがまれによくあるため、いいかんじに碁盤目状に並べられないかとChat GPTと一緒に作りました。