# AddState(State)

> Adds a state to the state machine.

## Definition

* **Type:** Method
* **Namespace:** [Unity.GraphToolkit.Editor](/engine/6000.7/script-reference/unity/graphtoolkit/editor.md)
* **Assembly:** UnityEditor

```csharp
public void AddState(State state)
```

### Parameters

**** (\[State]\(/engine/6000.7/script-reference/unity/graphtoolkit/editor/state)): The state to add.

### Remarks

If the state is already in this state machine, this method does nothing. If the state is currently in another state machine, it is removed from that state machine and added to this one. A state type is compatible when it is decorated with [UseWithStateMachineAttribute](/engine/6000.7/script-reference/unity/graphtoolkit/editor/usewithstatemachineattribute.md) for this state machine type, or when it is defined in the same assembly as the state machine (unless [StateMachineOptions.DisableAutoInclusionOfStatesFromStateMachineAssembly](/engine/6000.7/script-reference/unity/graphtoolkit/editor/statemachineoptions/disableautoinclusionofstatesfromstatemachineassembly.md) is set). Enclose this method with [StateMachine.UndoBeginRecordStateMachine](/engine/6000.7/script-reference/unity/graphtoolkit/editor/statemachine/undobeginrecordstatemachine.md) and [StateMachine.UndoEndRecordStateMachine](/engine/6000.7/script-reference/unity/graphtoolkit/editor/statemachine/undoendrecordstatemachine.md) to add this operation to the undo stack and to update the graph view with the changes.
