# CreateNewStateMachineBehaviour(MonoScript)

> This function will create a StateMachineBehaviour instance based on the class define in this script.

## Definition

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

```csharp
public static EntityId CreateNewStateMachineBehaviour(MonoScript script)
```

### Parameters

**** (\[MonoScript]\(/engine/6000.6/script-reference/unityeditor/monoscript)): MonoScript class to instantiate.

### Returns

| Type                                                                | Description                                                                          |
| ------------------------------------------------------------------- | ------------------------------------------------------------------------------------ |
| [EntityId](/engine/6000.6/script-reference/unityengine/entityid.md) | Returns EntityId of created object, returns EntityId.None if something is not valid. |

### Remarks

This function will validate that the monoscript is a valid statemachine behaviour, the class must be a sub class of StateMachineBehaviour and shouldn't be a generic. Additional Resources: [StateMachineBehaviour](/engine/6000.6/script-reference/unityengine/statemachinebehaviour.md).

### Examples

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

public class AddSMB
{
    public void DoAddStateMachineBehaviour(UnityEditor.Animations.AnimatorState state, MonoScript monoScript)
    {
        if (state == null)
            return;

        EntityId entityId = AnimatorController.CreateNewStateMachineBehaviour(monoScript);
        if (entityId == EntityId.None)
        {
            Debug.LogError("Could not create state machine behaviour " + monoScript.name);
            return;
        }

        state.AddStateMachineBehaviour(monoScript.GetClass());
        var behaviour = EditorUtility.EntityIdToObject(entityId);
        AssetDatabase.AddObjectToAsset(behaviour, state.ToString());
    }
}
```
