UI button pressed animation not playing directly after entering

Whenever I click the button directly after entering it with the mouse the animation won’t play instead the highlighted state is triggered twice, if i wait for a second it does play normally. Is this a bug with unity?

alt text

Remove all transition arrows. You could also add into a script the following

    public void SetStateNum (int num) {
         if(num == 0){
            animator.Play ("Normal");
          if(num == 1){
            animator.Play ("Highlighted");
         if(num == 2){
            animator.Play ("Pressed");

Add this script to your button with the Animator. Make sure to reference the animator.

Now on the button add an EventTrigger. Add PointerEnter, PointerDown, and PointerExit.

Now add New Transtion arrows from Pressed to Highlight.

PointerEnter should SetStateNum to 1. This will play highlight and keep it there.

Then PointerDown should call SetStateNum to 2. This will play Pressed and because of the transition arrow, it’ll go back to Highlighted after playing.

Now finally when exiting the button, it will go back to normal because we will be using SetStateNum to 0.

For future readers:
This is mostly caused by the “hasExitTime” variables. I think there is some issue in those in the OP’s case.

If you want the animation to change immediately, you should turn off “hasExitTime” entirely. As a precaution, before turning off the “hasExitTime”, I also set the “transitionDuration” to 0 “exitTime” to “0”