# playModeStateChanged

> Event that is raised whenever the Editor's play mode state changes.

## Definition

* **Type:** Event
* **Namespace:** [UnityEditor](/engine/6000.7/script-reference/unityeditor.md)
* **Assembly:** UnityEditor.CoreModule

```csharp
public static event Action<PlayModeStateChange> playModeStateChanged
```

### Remarks

Add an event handler to this event to receive a notification that the play mode state has changed, as well as information about the state it has changed into.

For new code, use the attributes [OnEnteringEditModeAttribute](/engine/6000.7/script-reference/unityeditor/scripting/lifecyclemanagement/onenteringeditmodeattribute.md), [OnExitingEditModeAttribute](/engine/6000.7/script-reference/unityeditor/scripting/lifecyclemanagement/onexitingeditmodeattribute.md), [OnEnteringPlayModeAttribute](/engine/6000.7/script-reference/unityengine/onenteringplaymodeattribute.md) and [OnExitingPlayModeAttribute](/engine/6000.7/script-reference/unityengine/onexitingplaymodeattribute.md) instead to avoid unnecessary event subscription handling. For more information, refer to [Code reload and the code lifecycle](/engine/6000.7/manual/scripting/compilation-and-code-reload/programming-code-lifecycle.md) in the manual.

The following example script logs the Editor's Play mode state to the console whenever it changes. Copy it into a file called PlayModeStateChangedExample.cs and put it in a folder called Editor.

```csharp
using UnityEngine;
using UnityEditor;

// ensure class initializer is called whenever scripts recompile
[InitializeOnLoadAttribute]
public static class PlayModeStateChangedExample
{
 // register an event handler when the class is initialized
 static PlayModeStateChangedExample()
 {
 EditorApplication.playModeStateChanged += LogPlayModeState;
 }

 private static void LogPlayModeState(PlayModeStateChange state)
 {
 Debug.Log(state);
 }
}
```

Additional Resources: [PlayModeStateChange](/engine/6000.7/script-reference/unityeditor/playmodestatechange.md), [EditorApplication.isPlaying](/engine/6000.7/script-reference/unityeditor/editorapplication/isplaying.md), [EditorApplication.pauseStateChanged](/engine/6000.7/script-reference/unityeditor/editorapplication/pausestatechanged.md).
