Playing montages one after another causing it not playing and T-pose showing

As show in the picture.

I play 3 montages one after another.

  1. The 1st montage (jump_middle) is playing and has 100% weight.
  2. The 2nd montage (jump_down) starts. the 1st montage is taking time to fade out and still gets 100% weight.
  3. The 3rd montage (jump_end) starts. Here we got a problem – The 1st animation gets popped out, the 2nd animation is still blending in and gets only 3% weight, the 3rd gets 0% as it’s just started. As a result, the total weight is 3%, and I got a T-pose.

I guess the problem is that the engine just keep the last 2 montages, and if you play many montages quickly, it gets problems. Is that right?

Any suggestions to solve this? I know normally we’re not supposed to play a new animation each frame. But this randomly happen in my game logic because I’m doing it according the time reaching ground, which can happen at any time.

By the way, I’m using UAnimInstance::Montage_Play to play those montage in code.