> For the complete documentation index, see [llms.txt](https://lightbug14.gitbook.io/ccp/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://lightbug14.gitbook.io/ccp/how-to.../core/add-logic-to-your-character.md).

# Add behavior logic to your character

## Getting a reference to the actor

```csharp
using UnityEngine;
using Lightbug.CharacterControllerPro.Core; //<-- Required

public class CharacterLogic: Monobehaviour
{
    [SerializeField]
    CharacterActor characterActor = null;
}

```

## Update message

Because the actor is a rigid body that's going to be affected by the physics simulation, all the logic must be located on *FixedUpdate*.

```csharp
using UnityEngine;
using Lightbug.CharacterControllerPro.Core; //<-- Required

public class CharacterLogic: Monobehaviour
{
    [SerializeField]
    CharacterActor characterActor = null;
    
    void FixedUpdate()
    {        
        // Put the logic here ...
    }
}
```

## Execution order

Because the actor runs its own update, it is important for the behavior logic (user-defined) to run before it. In Unity the execution order of scripts can be specified either in the project settings, or as a c# attribute called [*DefaultExecutionOrder*](https://docs.unity3d.com/ScriptReference/DefaultExecutionOrder.html).

By default, the *CharacterActor* class uses an execution order of 10. This means all scripts without the attribute (execution order = 0) will run before *CharacterActor*, which is what we want.

```csharp
//CharacterActorOrder = 10
[DefaultExecutionOrder(ExecutionOrder.CharacterActorOrder)]
public class CharacterActor : MonoBehaviour
{
    ...
}
```
