インスペクターでの参照登録をスクリプトで行う [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をいじったりもできるので、物量のあるプロジェクトでももう安心です!




