概要
アイテムのスロットを結構な数 たとえば 81 個とか追加して、連番で名前を打つといった作業
3~4個リネームしている途中で手を止めて、プログラムに任せたくなりますよね(守るべきは時間ではなく、心)
PlayMode にせずにスクリプトからヒエラルキーをロジックで編集する方法を記録してみたいと思います。
ExecuteInEditMode 属性をつける
このクラスは非ゲーム実行中も動くよと宣言
using UnityEngine; [ExecuteInEditMode] public class SlotAdder : MonoBehaviour { public GameObject prefabSlot; public Transform parent; public int index; public void AddSlot() { var button = Instantiate(prefabSlot, parent); button.name = "slot" + index.ToString("00"); index += 1; } }
CustomEditor 属性をつける
さっきの AddSlot をボタン押したときに実行できると楽ですよね。
インスペクターにボタンを置いて、そこからクラスの関数を呼び出すことができます。
using UnityEditor; using UnityEngine; [CustomEditor(typeof(SlotAdder))] public class SlotAdderButton : Editor { public override void OnInspectorGUI() { // 元のインスペクター部分を表示 base.OnInspectorGUI(); // targetを変換して対象を取得 var slotAdder = target as SlotAdder; // publicなメソッドを実行するボタン if (GUILayout.Button("Add Slot")) { slotAdder.AddSlot(); } } }