Unity3d class that inherits from button and add OnHold Event
There is a few thing you can improve : 


TimeMax is used like a constant here, but is not given the access modifier const.
Try to group your class members in a meaningful way. It could depend on their function(member of same interface), access-modifier, or what makes sense to you.

public ButtonHoldEvent onHold { get; set; }

private static float TimeMax = 2;

private bool isBeingPressed;
private float currTime;
private bool startTimer;

The name currTime doesn't reflect what it contains. heldDuration is more appropriate. The same applies for TimeMax and should be renamed TriggerTime.
isPressed is fine, but isHeldDown fits more the theme here.




Full code : 

[AddComponentMenu("UI/Hold Button")]
public class HoldButton : Button
{
    public ButtonHoldEvent onHold { get; set; }

    private const float TriggerTime = 2;

    private bool isHeldDown;
    private float heldDuration;

    public override void OnPointerDown(PointerEventData eventData)
    {
        isHeldDown = true;
        heldDuration = 0;
    }
    public override void OnPointerUp(PointerEventData eventData)
    {
        isHeldDown = false;
        heldDuration = 0;
    }

    void Update()
    {
        if (!isHeldDown)
        {
            heldDuration += Time.deltaTime;

            if (heldDuration &gt;= TriggerTime)
            {
                onHold.Invoke();

                // uncomment next line, to make `onHold` trigger only once per mouse press-hold
                //isHeldDown = false;
            }
        }
    }

    public class ButtonHoldEvent : UnityEvent
    {
        public ButtonHoldEvent() : base()
        {

        }
    }
}