Hey guys, I've just released the first version of C# Animator to the asset store! Asset Store Link I developed C# animator while working on a relatively large commercial game a couple of years ago. The problem I was trying to solve was designing and maintaining large animator assets. I found some simple things missing from the animator window, such as copying and pasting state transitions, or the ability to transition from many states to another without duplicating the same transition multiple times. I solved this problem by writing what I think is a nice C# interface for generating animator assets: Code (CSharp): ParameterData speed = FloatParam("Speed", 1.0f); ParameterData jumpTrigger = TriggerParam("JumpTrigger"); Animator ( Graph() [ Layer("Base").DefaultState("Idle") [ State("Idle", idleMotion), State("Run", runMotion), State("Jump", jumpMotion) ] ], Transitions() [ Transition().SourceMultiple("Idle", "Run").Destination("Jump") [ Trigger(jumpTrigger) ], Transition().Source("Jump").Destination("Idle").ExitTime(0.9f), Transition().Source("Idle").Destination("Run") [ Float(speed, speedForRun, ConditionMode.Greater) ], Transition().Source("Run").Destination("Idle") [ Float(speed, speedForRun, ConditionMode.Less) ] ] ); Using C# to generate animators, and more generally, using text, creating complex animation state machines has become a non-issue for me. States and transitions can be easily moved, copied, reference, and mass generated. Also, given that this code is part of your game project, the animator can directly reference constants used for gameplay. For example, your character controller may have a list of states described as an enum. Using this asset, you can reference the same state enum used to drive your gameplay logic to determine your transition conditions, meaning the animator and gameplay logic will never get out of sync! A big goal of this tool is to be as easy as possible to integrate. The bare minimum for the tool to function is to import "CSharpAnimator.cs". Optionally(recommended), you can import "CSharpAnimator_Class.cs". In order to create an animator generator class, you simply need to derive from either "CSharpAnimator" or "CSharpAnimator_ClassBase". deriving from CSharpAnimator requires the class to have it's own file, where the filename matches the class name(because it works like a scriptable object), deriving from CSharpAnimator_ClassBase will not have this restriction. Once the class is made in C#, the animator asset can be created through the Assets/Create menu. Then just press the generate button in the animator's inspector. Here's a small example of how this works: Complete example code with comments: Code Examples Introduction Document C# Animator also comes with full source code.