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