Surprisingly enough I haven’t found many topics like this so I guess I could give everyone a hand here and give my review of Mecanim system and why Legacy is still the favorite for a lot of developers:
PS: 4.3 still do not solve most of these problems, but it did give enough opening for the creation of this tool: Mecanim Control
Mecanim Review
The Good:
Visual editor
Mecanim gives a way to visualize your animator logic just like playMaker does for coding. Very useful to view, debug and blend your animations. Be able to visualize and modify the curves gives a great sense of control to reduce the “stiffness” of animation and blending.
The animation control is handled by the animator
What that means is that you don’t have to build your own classes to control when or how to start, stop or blend an animation. As long as one animation has a transition into another a simple animator.setBool(“crouching”,true/false) will take care of everything.
Built-in mirror option
One of the most important addition in my opinion. There are currently no built-in function like this in the Animation class and the only solution I found is not very elegant.
Blend-Tree
A very powerful tool. Currently the best solution for solving the most problems with the lack of the animation component.
Humanoid Rig
Being able to swap characters and add animations from other rigs is a very useful way to get around animations and model limitations without the use of a second software.
The Bad:
Visual editor
A great tool, no doubt about it. But unfortunately to preserve its structure, the only code access is parameter sending. Meaning the necessary transitions and clip storage must be done in the Animator. One of the characters I work with for example has around 30 usable animations. Some of them can be triggered while walking and idle, others can be triggered while crouching or jumping (meaning jumping-falling-landing). Some attacks can blend into other attacks and sometimes you want to create combos by tweaking animation canceling and frame link. That can all be accomplished by the Mecanim, but it won’t be pretty. You definitely won’t like it when you have to set 10 different transitions into one animation or vice-verse. With Mecanim, animation clips can only be referenced and played within the visual editor and nowhere else. Transitions must exist between all animations, so you can imagine the mess it can turn into.
The animation control is handled by the animator
Mecanim is built around the idea that your animation logic should be handled by the visual editor. Code wise, the only things you set are parameters and a couple global variables. At first it seems good and easier work, but soon I found out that a lot of my debugging had to do with one or two transition arrows missing or a sea of conditions around the Animator inspector. The urge to be able to serialize all this is tremendous.
Built-in mirror option
Because of limited code access, you can’t just manually set variables from clips. Unfortunately, the mirror option is only accessible through the clip state itself inside the visual editor. The only way to work around it is well … improvise
2 sub-state machines one identical to the other, more then 30 animations on each, several cross-transitions and tons of exceptions. One with all the animation’s “mirror” tagged in, the other without. As a programmer, that bothers me tremendously and you can imagine the amount of times I have to simple delete an entire sub-state, create a new one and re-tag the cross-transitions just because I spent too much time tweaking values on one side.
AnimationClip/animation.AddClip is no longer a thing
Meaning if you are creating packages so others can use, there is no escape from the Mecanim structure. In my case, while building Universal Fighting Engine, allowing the user to simply drag an animation clip into a script on the inspector seems a lot less complicated than navigate them through a confusing blending structure and teach how to create transitions to each animation it should blend into.
Conclusion:
- Easy to use interface
- Manual tweaks and preview window allows for very smooth blending
- Humanoid Rig/Mirror/Blend-Tree
- Most basic operations inaccessible through code
- Visual editor dependency
- Too many animations can get messy
I started working with Unity after Mecanim was already implemented, so I’m not defending legacy because of any kind of tropophobia. I came here with both tools available and felt like the only way I could accomplish my goals was to use the outdated legacy, even though Unity states that we should all change to Mecanim:
I hope this helps! I’m still a big fan of the product as a whole and I can easily see the uses of it. I just don’t understand the “deal” with visual editor dependency. It just limits the potential of everything that was built around this amazing tool tremendously forcing big projects to stick to legacy.
Cheers!