# OnSceneGUI()

> Enables the Editor to handle an event in the Scene view.

## Definition

* **Type:** Method
* **Namespace:** [UnityEditor](/engine/6000.6/script-reference/unityeditor.md)

```csharp
public void OnSceneGUI()
```

### Remarks

In the OnSceneGUI you can, for example, edit meshes, paint terrain, or have advanced gizmos. Refer to the [Handles](/engine/6000.6/script-reference/unityeditor/handles.md) class for methods related to drawing interactable visuals in the [SceneView](/engine/6000.6/script-reference/unityeditor/sceneview.md). If you want to draw elements in the Scene view, for instance by using \`Graphics.DrawMeshNow\`, only do so during [EventType.Repaint](/engine/6000.6/script-reference/unityengine/eventtype/repaint.md). In the following two scripts, OnSceneGUI is used to draw lines between GameObjects. The first script shows how OnSceneGUI is used. In this script, a GameObject is used as a parent. The script obtains the position of the parent and then draws lines from that position to GameObjects stored in an array. The script uses [Handles.DrawLine](/engine/6000.6/script-reference/unityeditor/handles/drawline.md) to draw lines. The documentation for [Handles.DrawLine](/engine/6000.6/script-reference/unityeditor/handles/drawline.md) has a very similar example.

### Examples

```csharp

using UnityEngine;
using UnityEditor;

[CustomEditor( typeof( DrawLine ) )]
public class DrawLineEditor : Editor
{
    // Draw lines between a chosen GameObject
    // and a selection of added GameObjects

    void OnSceneGUI()
    {
        // Get the chosen GameObject
        DrawLine t = target as DrawLine;

        if( t == null || t.GameObjects == null )
            return;

        // Grab the center of the parent
        Vector3 center = t.transform.position;

        // Iterate over GameObject added to the array...
        for( int i = 0; i < t.GameObjects.Length; i++ )
        {
            // ... and draw a line between them
            if( t.GameObjects[i] != null )
                Handles.DrawLine( center, t.GameObjects[i].transform.position );
        }
    }
}
```
