Unity’s Mecanim Animator Controller system has six main problems which are solved by Animancer:
|Lots of extra steps. Make a state, give it an animation, make a parameter, make a transition based on the parameter, then set the parameter with a script.
|Just get the
AnimationClip you want and tell Animancer to play it.
|All those extra steps are extra things that can go wrong, but it's impossible to debug them effectively. Unity's idea of "Effective Debugging" is to record everything then play it back and hope you can spot the problem without ever seeing any of the actual internal logic.
|Animancer Pro gives you full access to its source code so you can see what it's doing and use a proper debugger. But even without that, it doesn't try to manage its own behaviour, it just does what it's told and lets you access all its internal details at any time.
|All the animation logic for a character must always be defined in exactly one Animator Controller.
|Your scripts can organise the animations they will be using in whatever way you find most logical for each situation.
|Requires magic strings to identify states and parameters which are defined outside your code:
|Directly referencing the animations you want to play minimises your external dependencies:
|Scripts and Animator Controllers are strongly dependant on each other's logic, but never give any clear indication of exactly which parts they depend on or what things are used for. An Animator Controller with a
Jump state might be able to jump, but only if they have a script which will get them into that state.
|Scripts define all their logic and requirements. A script with a
Jump Animation field in the Inspector obviously needs a jump animation, or if a character doesn't have a jump script then they can't jump and don't need that animation.
|Tries to manage its own behaviour and will ignore or delay commands it isn't ready for. Calling
Play multiple times in the same frame will just play the first one and completely ignore the rest without warning.
|Always does exactly what your scripts tell it to do. Calling
Play multiple times in the same frame will end up with the last one playing because that's how code is supposed to work.