Animancer is a Unity plugin which allows you to play animations on demand and control all their details without any additional setup steps. It solves the major problems with Animator Controllers and can either replace them entirely or work alongside them on the same character. This makes animations much easier to work with in all stages of development from basic prototyping through to maintaining and debugging complex systems.

You can try out all the Features for FREE with Animancer Lite. It has plenty of detailed Examples to get you started, an extensive User Manual that explains how everything works, and even an introduction to C# in Unity.
Examples Documentation Performance API

Quick Play

Play animations on-demand without any unnecessary setup steps. Just get an AnimationClip and play it.

using Animancer;
using UnityEngine;

public class PlayAnimation : MonoBehaviour
{
    [SerializeField] private AnimancerComponent _Animancer;
    [SerializeField] private AnimationClip _Clip;

    private void OnEnable()
    {
        _Animancer.Play(_Clip);
    }
}
The Quick Play example gives an in-depth tutorial.

Easy Waiting

Register an End Event to receive a callback when an animation finishes.

void PlayAnimation(AnimancerComponent animancer, AnimationClip clip)
{
    AnimancerState state = animancer.Play(clip);
    state.Events.OnEnd = () => Debug.Log(clip.name + " ended");
}

Or yield return an AnimancerState inside a Coroutine to wait for it.

IEnumerator PlayAnimation(AnimancerComponent animancer, AnimationClip clip)
{
    AnimancerState state = animancer.Play(clip);
    yield return state;
    Debug.Log(clip.name + " ended");
}

Smooth Transitions

Blend between animations over time to ensure that your characters continue to move smoothly when changing between animations. The Custom Fade system allows you to replace the default linear interpolation with a custom fade curve and you can even transition from an animation into the start of that same animation consecutively using FadeMode.FromStart.

The Playing and Fading example demonstrates the differences between the various ways of transitioning between animations.

Flexible Structure

Organise your animations using arrays, ScriptableObjects, or any other structure you can come up with to suit your needs. Avoid Magic Strings and develop modular logic to streamline your debugging and refactoring processes.

This allows you to define common structures like DirectionalAnimationSet which can be reused in a variety of situations as demonstrated in the Directional Sprites examples.

Live Inspector

View the current details of your animations in the Inspector with manual controls for debugging and testing.

  • All fields can be edited in real-time.
  • Ctrl + Click on an animation to fade to it.
  • Drag and drop to add new ones animations.
  • Access additional functions via Context Menus.

Finite State Machines

Animancer doesn't force you to use a restrictive state machine system like Animator Controllers do. The Animancer.FSM is very flexible and entirely separate from the animation system. They work well together, but you can very easily modify it or use any other system you prefer.

High Performance

When compared to Animator Controllers, Animancer is notably faster at Instantiation and has a very slightly faster Average Frame Rate, though the differences are usually small enough not to matter.

Smooth Integration

Most plugins developed for other animation systems should work out of the box with Animancer and it supports features like:

Animancer Pro Features

You can try out the following features in the Unity Editor with Animancer Lite, but you will need to purchase Animancer Pro to use them in a runtime build or view the Source Code. See the Feature Comparison for the full list of differences.

Also note that most people only leave a review of the Pro version but not Lite so if you're looking for other opinions you will find many more on that page.

Total Control    [Pro-Only]

You have full access to the details of all animations at runtime, including their speed, time, and weight as demonstrated in the Fine Control examples.

void PlayAnimation(AnimancerComponent animancer, AnimationClip clip)
{
    var state = animancer.Play(clip);
    state.Speed = ...
    state.Time = ...
    state.NormalizedTime = ...
    state.Weight = ...
    state.Events.OnEnd = ...
}

Simple Configuration    [Pro-Only]

Use Transitions to manage the details of your animations in the Inspector so they can be edited as part of the scene rather than hard coded into a script.

using Animancer;
using UnityEngine;

public class TransitionExample : MonoBehaviour
{
    [SerializeField] private AnimancerComponent _Animancer;
    [SerializeField] private ClipState.Transition _Animation;

    private void OnEnable()
    {
        _Animancer.Play(_Animation);
    }
}

Custom Events

Register Event callbacks to be triggered at specific times during an animation.

void PlayAnimation(AnimancerComponent animancer, AnimationClip clip)
{
    AnimancerState state = animancer.Play(clip);
    state.Events.Add(0.5f, Debug.Log("Halfway done");
}
Or you can configure events in the Inspector when using Transitions. You can even use a hybrid approach which is demonstrated in the Golf Events example where you use the Inspector and Transition Preview Window to set the event times but leave the callbacks blank and register them in code instead.

Animation Layers    [Pro-Only]

Manage multiple animation sets at the same time (generally on different body parts). Layers can either override or add to each other and you can fade them in and out just like individual animations.

The Layers example demonstrates how to use them.

Animator Controllers    [Pro-Only]

Animancer does not require the use of Animator Controllers, but it does support a Hybrid approach which uses them alongside direct AnimationClip references for different tasks. You can even mix multiple Animator Controllers on a single character. You get total freedom to structure each project to suit your needs.

The 3D Game Kit example demonstrates how to convert an Animator Controller based character to use Animancer instead.

Animation Mixers    [Pro-Only]

Blend Trees automatically handle a lot of things for you such as timing walk animations so that they all put the character's foot down at the same time for better blending. Animation Mixers on the other hand can be created dynamically at runtime and give you full access to all sub-states so that you can control the finer details yourself.

The Linear Blending example goes into more detail about their differences.

Tools    [Pro-Only]

The Animancer Tools window contains several utilities for creating and modifying animations which can then be played with Animancer or any other animation system that supports them. These tools allow you to work with Sprites and Sprite based animations in bulk, such as renaming multiple Sprites at once or generating animations from them based on their names.

These tools are still very new and will rely on user feedback to help make them as useful as possible, so if you have any ideas please use the contact methods listed on the Help page.

Customisation    [Pro-Only]

Use Unity's Animation Job system for low level access to the animation stream and create custom state types to implement procedural animation, custom blending algorithms, or any other behaviour you can think of.

Source Code    [Pro-Only]

The full source code of Animancer is included as plain C# files with detailed comments so you can see all its internal workings, track down bugs, make any modifications you see fit, and avoid becoming dependant on the developer to fix issues (but feel free to use the Help and FAQ page if you need support).

The Animancer.Lite.dlls in the Animancer Pro package are empty dummies to ensure seamless upgrades from Animancer Lite, so they contain no code and are not included in builds.
Download Animancer and check out the Examples to get started.