Canvas を複数使っている場合、途中で Override Sorting されていた場合
今の Order In Layer を調べるのが手間なことがある
そのため、uGUI で描画されるオブジェクトには必ずついている Canvas Renderer
の
Inspector を拡張し現在の Order In Layer を表示するようにしてみた
コード
using UnityEditor; using UnityEngine; [CustomEditor(typeof(CanvasRenderer))] public class CanvasRendererExtensionEditor : Editor { private int? _orderInLayer; private void OnEnable() { var c = target as CanvasRenderer; _orderInLayer = GetOrderInLayer(c.transform); } private int? GetOrderInLayer(Transform transform) { while (true) { if (transform == null) return null; var canvas = transform.GetComponent<Canvas>(); transform = transform.parent; if (canvas == null) { continue; } if (canvas.overrideSorting) { return canvas.sortingOrder; } if (canvas == canvas.rootCanvas) return canvas.sortingOrder; } } public override void OnInspectorGUI() { base.OnInspectorGUI(); if (_orderInLayer.HasValue) { using (new EditorGUI.DisabledScope(true)) { EditorGUILayout.IntField("Order In Layer", _orderInLayer.Value); } } } }