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; public delegate void LastUpdateAction(); public static event LastUpdateAction LastUpdated; private void Update() { EarlyUpdated?.Invoke(); Updated?.Invoke(); } private void FixedUpdate() { FixedUpdated?.Invoke(); } private void LateUpdate() { LateUpdated?.Invoke(); LastUpdated?.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; } } public static int LastUpdateLength { get { var list = LastUpdated?.GetInvocationList(); return list?.Length ?? 0; } } } }