# GetBehaviour<T>()

> Returns the first StateMachineBehaviour that matches type T or is derived from T. Returns null if none are found.

## Definition

* **Type:** Method
* **Namespace:** [UnityEngine](/engine/6000.7/script-reference/unityengine.md)
* **Assembly:** UnityEngine.AnimationModule

```csharp
public T GetBehaviour<T>() where T : StateMachineBehaviour
```

### Returns

| Type | Description |
| ---- | ----------- |
| T    |             |

### Examples

```csharp
using UnityEditor;
using UnityEngine;

public class RunBehaviour : StateMachineBehaviour
{
    // OnStateUpdate is called at each Update frame between OnStateEnter and OnStateExit callback
    override public void OnStateUpdate(Animator animator, AnimatorStateInfo stateInfo, int layerIndex)
    {
        Transform transform = animator.GetComponent<Transform>();

        RaycastHit hitInfo;
        Vector3 dir = transform.TransformDirection(Vector3.forward);
        if (Physics.Raycast(transform.position + new Vector3(0, 1.5f, 0), dir, out hitInfo, 10))
        {
            if (hitInfo.collider.tag == "Obstacle")
            {
                animator.GetBehaviour<SlideBehaviour>().target = transform.position + 1.25f * hitInfo.distance * dir;
                if (hitInfo.distance < 6)
                    animator.SetTrigger("Slide");
            }
        }
    }
}

public class SlideBehaviour : StateMachineBehaviour
{
    public Vector3 target;

    public float slideMatchTargetStart = 0.11f;
    public float slideMatchTargetStop = 0.40f;

    // OnStateUpdate is called at each Update frame between OnStateEnter and OnStateExit callback
    override public void OnStateUpdate(Animator animator, AnimatorStateInfo stateInfo, int layerIndex)
    {
        animator.MatchTarget(target, new Quaternion(), AvatarTarget.Root, new MatchTargetWeightMask(new Vector3(1, 0, 1), 0), slideMatchTargetStart, slideMatchTargetStop);
    }
}
```
