# OnDisable()

> Called when a component itself is disabled or its parent GameObject is deactivated.

## Definition

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

```csharp
public void OnDisable()
```

### Remarks

`OnDisable` is called in the following scenarios: \* When a component of an active GameObject is disabled via code or the Inspector. \* When an enabled component's parent GameObject is deactivated. \* When the component or parent GameObject is destroyed by calling [Object.Destroy](/engine/6000.0/script-reference/unityengine/object/destroy.md). \* When the scene is unloaded. \* When scripts are reloaded as part of a domain reload. `OnDisable` cannot be a [coroutine](/engine/6000.0/manual/scripting/object-oriented-development/coroutines-section/coroutines.md). Additional Resources: [MonoBehaviour.OnEnable()](/engine/6000.0/script-reference/unityengine/monobehaviour/onenable.md).

### Examples

```csharp

// Implement OnDisable and OnEnable script functions.
// These functions will be called when the attached GameObject
// is activated/deactivated or the script component is enabled/disabled.
// This example also supports running in the Editor. The Update function
// will be called, for example, when the position of the
// GameObject is changed.

using UnityEngine;

[ExecuteInEditMode]
public class PrintOnOff : MonoBehaviour
{
    void OnDisable()
    {
        Debug.Log("PrintOnDisable: script was disabled");
    }

    void OnEnable()
    {
        Debug.Log("PrintOnEnable: script was enabled");
    }

    void Update()
    {
#if UNITY_EDITOR
        Debug.Log("Editor causes this Update");
#endif
    }
}
```
