インスペクターでの参照登録をスクリプトで行う [Unity]

インスペクターから連番ファイル名のスプライト等を大量に参照登録する際、スクリプトでfor文を回して登録した方が早いなーと思ったので今回試みてみました。

上画像のようにインスペクターにスプライトを今回は3つ参照登録してみます。
※配列SpritesのSizeに3と入力して要素を3つ準備しておきます。

登録するのは”Assets/EditAssister/Image/”内にある ball1 ~ 3.png です。

[MenuItem] を使って、下画像のようにメインメニューから実行できるようにします。

下のコードを「EditAssister.cs」というファイル名で保存して、Assets内のどこかに「Editor」フォルダを作ってそこに入れるとメインメニューから実行できるようになります。

using UnityEngine;
using UnityEngine.UI;
using UnityEditor;

public class EditAssister
{
    [MenuItem("CustomTools/Assist1")]
    private static void Assist1()
    {
        for (int i = 0; i < 3; i++)
        {
            GameObject.Find("SceneManager").GetComponent<EditAssisterScene>().sprites[i] =
                AssetDatabase.LoadAssetAtPath<Sprite>("Assets/EditAssister/Image/ball" + (i+1).ToString() + ".png");
        }
    }
}

他には下のコードのように、HogeというMonoBehaviourを継承したクラスを複数のGameObjectにコンポーネント登録して、さらにそのクラスにIDをふるようなことも出来ます。

for (int i = 0; i < 3; i++)
{
    var hoge = GameObject.Find("Canvas/Image" + (i + 1).ToString()).AddComponent<Hoge>();
    hoge.Fuga = i + 1;
}

あと、GameObjectのTransformをいじったりもできるので、物量のあるプロジェクトでももう安心です!

Post a comment

※承認されるまではコメントは表示されません。

Trackbacks

URL: http://b.i-tach.com/wp-trackback.php?p=1114