# Vector3Field

> Make an X, Y & Z field for entering a Vector3.

## Definition

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

## Vector3Field(string, Vector3, GUILayoutOption\[])

Make an X, Y & Z field for entering a [Vector3](/engine/6000.3/script-reference/unityengine/vector3.md).

```csharp
public static Vector3 Vector3Field(string label, Vector3 value, params GUILayoutOption[] options)
```

### Parameters

**** (\[string]\(https\://learn.microsoft.com/dotnet/api/system.string)): Label to display above the field.**** (\[Vector3]\(/engine/6000.3/script-reference/unityengine/vector3)): The value to edit.**** (\[GUILayoutOption\[]]\(/engine/6000.3/script-reference/unityengine/guilayoutoption)): An optional list of layout options that specify extra layout properties. Any values passed in here will override settings defined by the `style`.\
&#x20;Additional Resources: [GUILayout.Width](/engine/6000.3/script-reference/unityengine/guilayout/width.md), [GUILayout.Height](/engine/6000.3/script-reference/unityengine/guilayout/height.md), [GUILayout.MinWidth](/engine/6000.3/script-reference/unityengine/guilayout/minwidth.md), [GUILayout.MaxWidth](/engine/6000.3/script-reference/unityengine/guilayout/maxwidth.md), [GUILayout.MinHeight](/engine/6000.3/script-reference/unityengine/guilayout/minheight.md), [GUILayout.MaxHeight](/engine/6000.3/script-reference/unityengine/guilayout/maxheight.md), [GUILayout.ExpandWidth](/engine/6000.3/script-reference/unityengine/guilayout/expandwidth.md), [GUILayout.ExpandHeight](/engine/6000.3/script-reference/unityengine/guilayout/expandheight.md).

### Returns

| Type                                                              | Description                    |
| ----------------------------------------------------------------- | ------------------------------ |
| [Vector3](/engine/6000.3/script-reference/unityengine/vector3.md) | The value entered by the user. |

### Remarks

![EditorGUILayoutVector3Field (Vector3Field)](/api/media?file=/engine/6000.3/media/images/EditorGUILayoutVector3Field.png)

*Measure the distance between 2 GameObjects or 2 positions in 3D space.*

### Examples

```csharp
using UnityEditor;
using UnityEngine;

public class EditorGUILayoutVector3Field : UnityEditor.EditorWindow
{
    float distance = 0f;
    Vector3 obj1;
    Vector3 obj2;

    [MenuItem("Examples/Measure Distance between 2 objects")]
    static void Init()
    {
        EditorGUILayoutVector3Field window = (EditorGUILayoutVector3Field)EditorWindow.GetWindow(typeof(EditorGUILayoutVector3Field), true, "My Empty Window");
        window.Show();
    }

    void OnGUI()
    {
        GUILayout.Label("Select an object in the Hierarchy view and click 'Capture Position'");
        EditorGUILayout.BeginHorizontal();
        obj1 = EditorGUILayout.Vector3Field("GameObject 1:", obj1);
        if (GUILayout.Button("Capture Position"))
            obj1 = Selection.activeTransform.position;
        EditorGUILayout.EndHorizontal();

        EditorGUILayout.BeginHorizontal();
        obj2 = EditorGUILayout.Vector3Field("GameObject 2:", obj2);
        if (GUILayout.Button("Capture Position"))
            obj2 = Selection.activeTransform.position;
        EditorGUILayout.EndHorizontal();
        EditorGUILayout.LabelField("Distance:", distance.ToString());
        if (GUILayout.Button("Close"))
            this.Close();
    }

    void OnInspectorUpdate()
    {
        distance = Vector3.Distance(obj1, obj2);
        this.Repaint();
    }
}
```

## Vector3Field(GUIContent, Vector3, GUILayoutOption\[])

Make an X, Y & Z field for entering a [Vector3](/engine/6000.3/script-reference/unityengine/vector3.md).

```csharp
public static Vector3 Vector3Field(GUIContent label, Vector3 value, params GUILayoutOption[] options)
```

### Parameters

**** (\[GUIContent]\(/engine/6000.3/script-reference/unityengine/guicontent)): Label to display above the field.**** (\[Vector3]\(/engine/6000.3/script-reference/unityengine/vector3)): The value to edit.**** (\[GUILayoutOption\[]]\(/engine/6000.3/script-reference/unityengine/guilayoutoption)): An optional list of layout options that specify extra layout properties. Any values passed in here will override settings defined by the `style`.\
&#x20;Additional Resources: [GUILayout.Width](/engine/6000.3/script-reference/unityengine/guilayout/width.md), [GUILayout.Height](/engine/6000.3/script-reference/unityengine/guilayout/height.md), [GUILayout.MinWidth](/engine/6000.3/script-reference/unityengine/guilayout/minwidth.md), [GUILayout.MaxWidth](/engine/6000.3/script-reference/unityengine/guilayout/maxwidth.md), [GUILayout.MinHeight](/engine/6000.3/script-reference/unityengine/guilayout/minheight.md), [GUILayout.MaxHeight](/engine/6000.3/script-reference/unityengine/guilayout/maxheight.md), [GUILayout.ExpandWidth](/engine/6000.3/script-reference/unityengine/guilayout/expandwidth.md), [GUILayout.ExpandHeight](/engine/6000.3/script-reference/unityengine/guilayout/expandheight.md).

### Returns

| Type                                                              | Description                    |
| ----------------------------------------------------------------- | ------------------------------ |
| [Vector3](/engine/6000.3/script-reference/unityengine/vector3.md) | The value entered by the user. |

### Remarks

![EditorGUILayoutVector3Field (Vector3Field)](/api/media?file=/engine/6000.3/media/images/EditorGUILayoutVector3Field.png)

*Measure the distance between 2 GameObjects or 2 positions in 3D space.*

### Examples

```csharp
using UnityEditor;
using UnityEngine;

public class EditorGUILayoutVector3Field : UnityEditor.EditorWindow
{
    float distance = 0f;
    Vector3 obj1;
    Vector3 obj2;

    [MenuItem("Examples/Measure Distance between 2 objects")]
    static void Init()
    {
        EditorGUILayoutVector3Field window = (EditorGUILayoutVector3Field)EditorWindow.GetWindow(typeof(EditorGUILayoutVector3Field), true, "My Empty Window");
        window.Show();
    }

    void OnGUI()
    {
        GUILayout.Label("Select an object in the Hierarchy view and click 'Capture Position'");
        EditorGUILayout.BeginHorizontal();
        obj1 = EditorGUILayout.Vector3Field("GameObject 1:", obj1);
        if (GUILayout.Button("Capture Position"))
            obj1 = Selection.activeTransform.position;
        EditorGUILayout.EndHorizontal();

        EditorGUILayout.BeginHorizontal();
        obj2 = EditorGUILayout.Vector3Field("GameObject 2:", obj2);
        if (GUILayout.Button("Capture Position"))
            obj2 = Selection.activeTransform.position;
        EditorGUILayout.EndHorizontal();
        EditorGUILayout.LabelField("Distance:", distance.ToString());
        if (GUILayout.Button("Close"))
            this.Close();
    }

    void OnInspectorUpdate()
    {
        distance = Vector3.Distance(obj1, obj2);
        this.Repaint();
    }
}
```
