using UnityEngine; namespace Utils { public class EventManager : MonoBehaviour { public delegate void UpdateAction(); public static event UpdateAction Updated; public delegate void FixedUpdateAction(); public static event FixedUpdateAction FixedUpdated; public delegate void LateUpdateAction(); public static event LateUpdateAction LateUpdated; public delegate void EarlyUpdateAction(); public static event EarlyUpdateAction EarlyUpdated; private void Update() { EarlyUpdated?.Invoke(); Updated?.Invoke(); } private void FixedUpdate() { FixedUpdated?.Invoke(); } private void LateUpdate() { LateUpdated?.Invoke(); } public static int UpdateLength { get { var list = Updated?.GetInvocationList(); return list?.Length ?? 0; } } public static int FixedUpdateLength { get { var list = FixedUpdated?.GetInvocationList(); return list?.Length ?? 0; } } public static int LateUpdateLength { get { var list = LateUpdated?.GetInvocationList(); return list?.Length ?? 0; } } public static int EarlyUpdateLength { get { var list = EarlyUpdated?.GetInvocationList(); return list?.Length ?? 0; } } } }