- This bug is fixed in Unity 2021+.
- If you're using a Native Animator Controller you can control its overall speed by setting the
Animator.speed
(usually accessed via theAnimancerComponent.Animator
). - But if you're using a
HybridAnimancerComponent
orControllerState
it's not possible to directly set the speed.- The
ControllerState
class has aSpeed
property Inherited from the baseAnimancerState
but Unity's internalAnimatorControllerPlayable
simply ignores it.
- The
Workaround
Other than updating to a newer version of Unity, there's only one known workaround (and it's not very good):
- Create a
Float Parameter
. - Select all of the states in the Animator Controller.
- Enable their
Speed Multiplier
and set it to use the parameter you just created. - Repeat steps 2 and 3 for each layer and sub-state machine.
- Now you can use
ControllerState.SetFloat("Parameter Name", speed);
to control the speed of all states.
Unfortunately, that only affects the states themselves, not the transitions between them.