# AnimatorControllerLayer

> Contains a state machine that controls animations of a model or parts of it.

## Definition

* **Type:** Class
* **Namespace:** [UnityEditor.Animations](/engine/6000.5/script-reference/unityeditor/animations.md)
* **Assembly:** UnityEditor.CoreModule

```csharp
public class AnimatorControllerLayer
```

## Remarks

An [AnimatorController](/engine/6000.5/script-reference/unityeditor/animations/animatorcontroller.md) uses [AnimatorControllerLayers](/engine/6000.5/script-reference/unityeditor/animations/animatorcontrollerlayer.md) to manage and blend multiple animation states. You can add a layer to an [AnimatorController](/engine/6000.5/script-reference/unityeditor/animations/animatorcontroller.md) in the Animator window or through scripting using [AnimatorController.AddLayer](/engine/6000.5/script-reference/unityeditor/animations/animatorcontroller/addlayer.md). [AnimatorController.layers](/engine/6000.5/script-reference/unityeditor/animations/animatorcontroller/layers.md) contains the list of layers of an [AnimatorController](/engine/6000.5/script-reference/unityeditor/animations/animatorcontroller.md).

```csharp
using UnityEditor;
using UnityEditor.Animations;

// This example demonstrates how to create an AnimatorController that contains an injured layer and a fatigued layer
// by default.
public class AnimatorControllerLayerExample
{
    [MenuItem("Example/AnimatorController with Default Layers")]
    public static void CreateAnimatorControllerWithDefaultLayers()
    {
        // Create an AnimatorController
        var controller = AnimatorController.CreateAnimatorControllerAtPath("Assets/NewControllerWithLayers.controller");

        // Create a new injured layer
        var injuredLayer = new AnimatorControllerLayer
        {
            name = "Injured",
            stateMachine = new AnimatorStateMachine()
        };

        // Add the layer to the controller
        controller.AddLayer(injuredLayer);

        // Create a new fatigued layer
        var fatiguedLayer = new AnimatorControllerLayer
        {
            name = "Fatigued",
            stateMachine = new AnimatorStateMachine()
        };

        // Add the layer to the controller
        controller.AddLayer(fatiguedLayer);

        // Save the controller
        AssetDatabase.SaveAssetIfDirty(controller);
    }
}
```

Additional Resources: [AnimationLayers](/engine/6000.5/manual/animation-section/animation-mecanim/animation-animator-controller/animation-state-machines/animation-layers.md) manual. [AnimatorController.RemoveLayer](/engine/6000.5/script-reference/unityeditor/animations/animatorcontroller/removelayer.md) for removing layers.

## Properties

| Property                                                                                                                               | Description                                                                                           |
| -------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------- |
| [avatarMask](/engine/6000.5/script-reference/unityeditor/animations/animatorcontrollerlayer/avatarmask.md)                             | The AvatarMask that is used to mask the animation on the given layer.                                 |
| [blendingMode](/engine/6000.5/script-reference/unityeditor/animations/animatorcontrollerlayer/blendingmode.md)                         | The blending mode used by the layer. It is not taken into account for the first layer.                |
| [defaultWeight](/engine/6000.5/script-reference/unityeditor/animations/animatorcontrollerlayer/defaultweight.md)                       | The default blending weight that the layers has. It is not taken into account for the first layer.    |
| [iKPass](/engine/6000.5/script-reference/unityeditor/animations/animatorcontrollerlayer/ikpass.md)                                     | When active, the layer will have an IK pass when evaluated. It will trigger an OnAnimatorIK callback. |
| [name](/engine/6000.5/script-reference/unityeditor/animations/animatorcontrollerlayer/name.md)                                         | The name of the layer.                                                                                |
| [stateMachine](/engine/6000.5/script-reference/unityeditor/animations/animatorcontrollerlayer/statemachine.md)                         | The state machine for the layer.                                                                      |
| [syncedLayerAffectsTiming](/engine/6000.5/script-reference/unityeditor/animations/animatorcontrollerlayer/syncedlayeraffectstiming.md) | When active, the layer will take control of the duration of the Synced Layer.                         |
| [syncedLayerIndex](/engine/6000.5/script-reference/unityeditor/animations/animatorcontrollerlayer/syncedlayerindex.md)                 | Specifies the index of the Synced Layer.                                                              |

## Methods

| Method                                                                                                                           | Description                                                        |
| -------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------ |
| [GetOverrideBehaviours](/engine/6000.5/script-reference/unityeditor/animations/animatorcontrollerlayer/getoverridebehaviours.md) | Gets the override behaviour list for the state on the given layer. |
| [GetOverrideMotion](/engine/6000.5/script-reference/unityeditor/animations/animatorcontrollerlayer/getoverridemotion.md)         | Gets the override motion for the state on the given layer.         |
| [SetOverrideBehaviours](/engine/6000.5/script-reference/unityeditor/animations/animatorcontrollerlayer/setoverridebehaviours.md) | Sets the override behaviour list for the state on the given layer. |
| [SetOverrideMotion](/engine/6000.5/script-reference/unityeditor/animations/animatorcontrollerlayer/setoverridemotion.md)         | Sets the override motion for the state on the given layer.         |
