using System; using UnityEditor; using UnityEngine; namespace Utils.Editor { [CustomEditor(typeof(EventManager), true)] public class EventManagerEditor : UnityEditor.Editor { public override void OnInspectorGUI() { Event("EarlyUpdate", EventManager.EarlyUpdateLength, EventManager.EarlyUpdateDelegates); EditorGUILayout.Space(); Event("Update", EventManager.UpdateLength, EventManager.UpdateDelegates); EditorGUILayout.Space(); Event("LateUpdate", EventManager.LateUpdateLength, EventManager.LateUpdateDelegates); EditorGUILayout.Space(); Event("LastUpdate", EventManager.LastUpdateLength, EventManager.LastUpdateDelegates); } private void Event(string title, int length, Delegate[] delegates) { { GUILayout.BeginHorizontal(); GUILayout.Label(title, EditorStyles.boldLabel); GUILayout.FlexibleSpace(); GUILayout.Label(length.ToString()); GUILayout.EndHorizontal(); if (length == 0) return; foreach (var d in delegates) { GUILayout.Label($"{d.Method.DeclaringType}.{d.Method.Name}", EditorStyles.miniLabel); } } } } }