Unityのinspectorにボタン置く
UnityのEditorスクリプトの書き方。Inspector上にボタンを表示して、押したらPlay中pause中に関わらず何かしら処理をしてくれるようになるやつです。
例として「ボタンを押したら、アタッチされているオブジェクトの子の順番が変わる」スクリプトを作りました。
- Editorフォルダ以下にReverseTransformOrderEditor.csを置く
- 特殊フォルダじゃない場所にReverseTransformOrder.csを置く
としてください。
everseTransformOrder.csがInspector上でオブジェクトにアタッチされるガワになり、ボタンの表示と実際の処理はReverseTransformOrderEditor.csで行ってます。
ReverseTransformOrderEditor.cs
using System.Collections.Generic; using UnityEditor; using UnityEngine; [CustomEditor(typeof(ReverseTransformOrder))] public class ReverseTransformOrderEditor : Editor { ReverseTransformOrder reverseTransformOrder = null; private void OnEnable() { reverseTransformOrder = target as ReverseTransformOrder; } public override void OnInspectorGUI() { base.OnInspectorGUI(); if (GUILayout.Button("逆順に並び変え")) { var transformCount = reverseTransformOrder.transform.GetChildCount(); List<Transform> distTransformList = new List<Transform>(); for (int index = transformCount - 1; index >= 0; index--) // 後ろから { var currentTransform = reverseTransformOrder.transform.GetChild(index); currentTransform.SetParent(null); distTransformList.Add(currentTransform); } // 再配置 foreach (var t in distTransformList) { t.SetParent(reverseTransformOrder.transform); } } } }
ReverseTransformOrder.cs
using UnityEngine; public class ReverseTransformOrder : MonoBehaviour { // この例では何も書く必要なし }