override public IEnumerator Select()
    {
        float elapsedTime   = 0;
        float animationTime = 0.5f;

        while (currentState == state.Select && elapsedTime < animationTime)
        {
            float scale = PennerAnimation.BackEaseOut(elapsedTime / animationTime, 0, 1, 1);
            transform.localScale = pivotScale + Vector3.one * 0.25f * scale;
            elapsedTime         += Time.unscaledDeltaTime;
            yield return(0);
        }
        transform.localScale = pivotScale + Vector3.one * 0.25f;

        while (currentState == state.Select)
        {
            yield return(0);
        }

        yield return(gameObject.DoUnscaledTween01(t =>
        {
            float scale = PennerAnimation.QuadEaseIn(t, 1, -1, 1);
            transform.localScale = pivotScale + Vector3.one * 0.25f * scale;
        }, 0.1f));
    }