# BeginScrollView

> Begin a scrolling view inside your GUI.

## Definition

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

## BeginScrollView(Rect, Vector2, Rect)

Begin a scrolling view inside your GUI.

```csharp
public static Vector2 BeginScrollView(Rect position, Vector2 scrollPosition, Rect viewRect)
```

### Parameters

**** (\[Rect]\(/engine/6000.5/script-reference/unityengine/rect)): Rectangle on the screen to use for the ScrollView.**** (\[Vector2]\(/engine/6000.5/script-reference/unityengine/vector2)): The pixel distance that the view is scrolled in the X and Y directions.**** (\[Rect]\(/engine/6000.5/script-reference/unityengine/rect)): The rectangle used inside the scrollview.

### Returns

| Type                                                              | Description                                                                                         |
| ----------------------------------------------------------------- | --------------------------------------------------------------------------------------------------- |
| [Vector2](/engine/6000.5/script-reference/unityengine/vector2.md) | The modified scrollPosition. Feed this back into the variable you pass in, as shown in the example. |

### Remarks

ScrollViews let you make a smaller area on-screen look 'into' a much larger area, using scrollbars placed on the sides of the ScrollView.

### Examples

```csharp
using UnityEngine;
using System.Collections;

public class ExampleClass : MonoBehaviour
{
    // The position on of the scrolling viewport
    public Vector2 scrollPosition = Vector2.zero;

    void OnGUI()
    {
        // An absolute-positioned example: We make a scrollview that has a really large client
        // rect and put it in a small rect on the screen.
        scrollPosition = GUI.BeginScrollView(new Rect(10, 300, 100, 100), scrollPosition, new Rect(0, 0, 220, 200));

        // Make four buttons - one in each corner. The coordinate system is defined
        // by the last parameter to BeginScrollView.
        GUI.Button(new Rect(0, 0, 100, 20), "Top-left");
        GUI.Button(new Rect(120, 0, 100, 20), "Top-right");
        GUI.Button(new Rect(0, 180, 100, 20), "Bottom-left");
        GUI.Button(new Rect(120, 180, 100, 20), "Bottom-right");

        // End the scroll view that we began above.
        GUI.EndScrollView();
    }
}
```

## BeginScrollView(Rect, Vector2, Rect, bool, bool)

Begin a scrolling view inside your GUI.

```csharp
public static Vector2 BeginScrollView(Rect position, Vector2 scrollPosition, Rect viewRect, bool alwaysShowHorizontal, bool alwaysShowVertical)
```

### Parameters

**** (\[Rect]\(/engine/6000.5/script-reference/unityengine/rect)): Rectangle on the screen to use for the ScrollView.**** (\[Vector2]\(/engine/6000.5/script-reference/unityengine/vector2)): The pixel distance that the view is scrolled in the X and Y directions.**** (\[Rect]\(/engine/6000.5/script-reference/unityengine/rect)): The rectangle used inside the scrollview.**** (\[bool]\(https\://learn.microsoft.com/dotnet/api/system.boolean)): Optional parameter to always show the horizontal scrollbar. If false or left out, it is only shown when `viewRect` is wider than `position`.**** (\[bool]\(https\://learn.microsoft.com/dotnet/api/system.boolean)): Optional parameter to always show the vertical scrollbar. If false or left out, it is only shown when `viewRect` is taller than `position`.

### Returns

| Type                                                              | Description                                                                                         |
| ----------------------------------------------------------------- | --------------------------------------------------------------------------------------------------- |
| [Vector2](/engine/6000.5/script-reference/unityengine/vector2.md) | The modified scrollPosition. Feed this back into the variable you pass in, as shown in the example. |

### Remarks

ScrollViews let you make a smaller area on-screen look 'into' a much larger area, using scrollbars placed on the sides of the ScrollView.

### Examples

```csharp
using UnityEngine;
using System.Collections;

public class ExampleClass : MonoBehaviour
{
    // The position on of the scrolling viewport
    public Vector2 scrollPosition = Vector2.zero;

    void OnGUI()
    {
        // An absolute-positioned example: We make a scrollview that has a really large client
        // rect and put it in a small rect on the screen.
        scrollPosition = GUI.BeginScrollView(new Rect(10, 300, 100, 100), scrollPosition, new Rect(0, 0, 220, 200));

        // Make four buttons - one in each corner. The coordinate system is defined
        // by the last parameter to BeginScrollView.
        GUI.Button(new Rect(0, 0, 100, 20), "Top-left");
        GUI.Button(new Rect(120, 0, 100, 20), "Top-right");
        GUI.Button(new Rect(0, 180, 100, 20), "Bottom-left");
        GUI.Button(new Rect(120, 180, 100, 20), "Bottom-right");

        // End the scroll view that we began above.
        GUI.EndScrollView();
    }
}
```

## BeginScrollView(Rect, Vector2, Rect, GUIStyle, GUIStyle)

Begin a scrolling view inside your GUI.

```csharp
public static Vector2 BeginScrollView(Rect position, Vector2 scrollPosition, Rect viewRect, GUIStyle horizontalScrollbar, GUIStyle verticalScrollbar)
```

### Parameters

**** (\[Rect]\(/engine/6000.5/script-reference/unityengine/rect)): Rectangle on the screen to use for the ScrollView.**** (\[Vector2]\(/engine/6000.5/script-reference/unityengine/vector2)): The pixel distance that the view is scrolled in the X and Y directions.**** (\[Rect]\(/engine/6000.5/script-reference/unityengine/rect)): The rectangle used inside the scrollview.**** (\[GUIStyle]\(/engine/6000.5/script-reference/unityengine/guistyle)): Optional [GUIStyle](/engine/6000.5/script-reference/unityengine/guistyle.md) to use for the horizontal scrollbar. If left out, the `horizontalScrollbar` style from the current [GUISkin](/engine/6000.5/script-reference/unityengine/guiskin.md) is used.**** (\[GUIStyle]\(/engine/6000.5/script-reference/unityengine/guistyle)): Optional [GUIStyle](/engine/6000.5/script-reference/unityengine/guistyle.md) to use for the vertical scrollbar. If left out, the `verticalScrollbar` style from the current [GUISkin](/engine/6000.5/script-reference/unityengine/guiskin.md) is used.

### Returns

| Type                                                              | Description                                                                                         |
| ----------------------------------------------------------------- | --------------------------------------------------------------------------------------------------- |
| [Vector2](/engine/6000.5/script-reference/unityengine/vector2.md) | The modified scrollPosition. Feed this back into the variable you pass in, as shown in the example. |

### Remarks

ScrollViews let you make a smaller area on-screen look 'into' a much larger area, using scrollbars placed on the sides of the ScrollView.

### Examples

```csharp
using UnityEngine;
using System.Collections;

public class ExampleClass : MonoBehaviour
{
    // The position on of the scrolling viewport
    public Vector2 scrollPosition = Vector2.zero;

    void OnGUI()
    {
        // An absolute-positioned example: We make a scrollview that has a really large client
        // rect and put it in a small rect on the screen.
        scrollPosition = GUI.BeginScrollView(new Rect(10, 300, 100, 100), scrollPosition, new Rect(0, 0, 220, 200));

        // Make four buttons - one in each corner. The coordinate system is defined
        // by the last parameter to BeginScrollView.
        GUI.Button(new Rect(0, 0, 100, 20), "Top-left");
        GUI.Button(new Rect(120, 0, 100, 20), "Top-right");
        GUI.Button(new Rect(0, 180, 100, 20), "Bottom-left");
        GUI.Button(new Rect(120, 180, 100, 20), "Bottom-right");

        // End the scroll view that we began above.
        GUI.EndScrollView();
    }
}
```

## BeginScrollView(Rect, Vector2, Rect, bool, bool, GUIStyle, GUIStyle)

Begin a scrolling view inside your GUI.

```csharp
public static Vector2 BeginScrollView(Rect position, Vector2 scrollPosition, Rect viewRect, bool alwaysShowHorizontal, bool alwaysShowVertical, GUIStyle horizontalScrollbar, GUIStyle verticalScrollbar)
```

### Parameters

**** (\[Rect]\(/engine/6000.5/script-reference/unityengine/rect)): Rectangle on the screen to use for the ScrollView.**** (\[Vector2]\(/engine/6000.5/script-reference/unityengine/vector2)): The pixel distance that the view is scrolled in the X and Y directions.**** (\[Rect]\(/engine/6000.5/script-reference/unityengine/rect)): The rectangle used inside the scrollview.**** (\[bool]\(https\://learn.microsoft.com/dotnet/api/system.boolean)): Optional parameter to always show the horizontal scrollbar. If false or left out, it is only shown when `viewRect` is wider than `position`.**** (\[bool]\(https\://learn.microsoft.com/dotnet/api/system.boolean)): Optional parameter to always show the vertical scrollbar. If false or left out, it is only shown when `viewRect` is taller than `position`.**** (\[GUIStyle]\(/engine/6000.5/script-reference/unityengine/guistyle)): Optional [GUIStyle](/engine/6000.5/script-reference/unityengine/guistyle.md) to use for the horizontal scrollbar. If left out, the `horizontalScrollbar` style from the current [GUISkin](/engine/6000.5/script-reference/unityengine/guiskin.md) is used.**** (\[GUIStyle]\(/engine/6000.5/script-reference/unityengine/guistyle)): Optional [GUIStyle](/engine/6000.5/script-reference/unityengine/guistyle.md) to use for the vertical scrollbar. If left out, the `verticalScrollbar` style from the current [GUISkin](/engine/6000.5/script-reference/unityengine/guiskin.md) is used.

### Returns

| Type                                                              | Description                                                                                         |
| ----------------------------------------------------------------- | --------------------------------------------------------------------------------------------------- |
| [Vector2](/engine/6000.5/script-reference/unityengine/vector2.md) | The modified scrollPosition. Feed this back into the variable you pass in, as shown in the example. |

### Remarks

ScrollViews let you make a smaller area on-screen look 'into' a much larger area, using scrollbars placed on the sides of the ScrollView.

### Examples

```csharp
using UnityEngine;
using System.Collections;

public class ExampleClass : MonoBehaviour
{
    // The position on of the scrolling viewport
    public Vector2 scrollPosition = Vector2.zero;

    void OnGUI()
    {
        // An absolute-positioned example: We make a scrollview that has a really large client
        // rect and put it in a small rect on the screen.
        scrollPosition = GUI.BeginScrollView(new Rect(10, 300, 100, 100), scrollPosition, new Rect(0, 0, 220, 200));

        // Make four buttons - one in each corner. The coordinate system is defined
        // by the last parameter to BeginScrollView.
        GUI.Button(new Rect(0, 0, 100, 20), "Top-left");
        GUI.Button(new Rect(120, 0, 100, 20), "Top-right");
        GUI.Button(new Rect(0, 180, 100, 20), "Bottom-left");
        GUI.Button(new Rect(120, 180, 100, 20), "Bottom-right");

        // End the scroll view that we began above.
        GUI.EndScrollView();
    }
}
```
