# BeginGroup

> Begin a group. Must be matched with a call to GUI.EndGroup.

## Definition

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

## BeginGroup(Rect)

Begin a group. Must be matched with a call to [GUI.EndGroup](/engine/6000.7/script-reference/unityengine/gui/endgroup.md).

```csharp
public static void BeginGroup(Rect position)
```

### Parameters

**** (\[Rect]\(/engine/6000.7/script-reference/unityengine/rect)): Rectangle on the screen to use for the group.

### Remarks

When you begin a group, the coordinate system for GUI controls are set so (0,0) is the top-left corner of the group. All controls are clipped to the group. Groups can be nested - if they are, children are clipped to their parents.

This is very useful when moving a bunch of GUI elements around on screen. A common use case is designing your menus to fit on a specific screen size, then centering the GUI on larger displays.

Additional Resources: [\_matrix](/engine/6000.7/script-reference/unityengine/gui/matrix.md), [GUI.BeginScrollView](/engine/6000.7/script-reference/unityengine/gui/beginscrollview.md)

### Examples

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

public class ExampleClass : MonoBehaviour
{
    void OnGUI()
    {
        // Constrain all drawing to be within a 800x600 pixel area centered on the screen.
        GUI.BeginGroup(new Rect(Screen.width / 2 - 400, Screen.height / 2 - 300, 800, 600));

        // Draw a box in the new coordinate space defined by the BeginGroup.
        // Notice how (0,0) has now been moved on-screen
        GUI.Box(new Rect(0, 0, 800, 600), "This box is now centered! - here you would put your main menu");

        // We need to match all BeginGroup calls with an EndGroup
        GUI.EndGroup();
    }
}
```

## BeginGroup(Rect, string)

Begin a group. Must be matched with a call to [GUI.EndGroup](/engine/6000.7/script-reference/unityengine/gui/endgroup.md).

```csharp
public static void BeginGroup(Rect position, string text)
```

### Parameters

**** (\[Rect]\(/engine/6000.7/script-reference/unityengine/rect)): Rectangle on the screen to use for the group.**** (\[string]\(https\://learn.microsoft.com/dotnet/api/system.string)): Text to display on the group.

### Remarks

When you begin a group, the coordinate system for GUI controls are set so (0,0) is the top-left corner of the group. All controls are clipped to the group. Groups can be nested - if they are, children are clipped to their parents.

This is very useful when moving a bunch of GUI elements around on screen. A common use case is designing your menus to fit on a specific screen size, then centering the GUI on larger displays.

Additional Resources: [\_matrix](/engine/6000.7/script-reference/unityengine/gui/matrix.md), [GUI.BeginScrollView](/engine/6000.7/script-reference/unityengine/gui/beginscrollview.md)

### Examples

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

public class ExampleClass : MonoBehaviour
{
    void OnGUI()
    {
        // Constrain all drawing to be within a 800x600 pixel area centered on the screen.
        GUI.BeginGroup(new Rect(Screen.width / 2 - 400, Screen.height / 2 - 300, 800, 600));

        // Draw a box in the new coordinate space defined by the BeginGroup.
        // Notice how (0,0) has now been moved on-screen
        GUI.Box(new Rect(0, 0, 800, 600), "This box is now centered! - here you would put your main menu");

        // We need to match all BeginGroup calls with an EndGroup
        GUI.EndGroup();
    }
}
```

## BeginGroup(Rect, Texture)

Begin a group. Must be matched with a call to [GUI.EndGroup](/engine/6000.7/script-reference/unityengine/gui/endgroup.md).

```csharp
public static void BeginGroup(Rect position, Texture image)
```

### Parameters

**** (\[Rect]\(/engine/6000.7/script-reference/unityengine/rect)): Rectangle on the screen to use for the group.**** (\[Texture]\(/engine/6000.7/script-reference/unityengine/texture)): [Texture](/engine/6000.7/script-reference/unityengine/texture.md) to display on the group.

### Remarks

When you begin a group, the coordinate system for GUI controls are set so (0,0) is the top-left corner of the group. All controls are clipped to the group. Groups can be nested - if they are, children are clipped to their parents.

This is very useful when moving a bunch of GUI elements around on screen. A common use case is designing your menus to fit on a specific screen size, then centering the GUI on larger displays.

Additional Resources: [\_matrix](/engine/6000.7/script-reference/unityengine/gui/matrix.md), [GUI.BeginScrollView](/engine/6000.7/script-reference/unityengine/gui/beginscrollview.md)

### Examples

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

public class ExampleClass : MonoBehaviour
{
    void OnGUI()
    {
        // Constrain all drawing to be within a 800x600 pixel area centered on the screen.
        GUI.BeginGroup(new Rect(Screen.width / 2 - 400, Screen.height / 2 - 300, 800, 600));

        // Draw a box in the new coordinate space defined by the BeginGroup.
        // Notice how (0,0) has now been moved on-screen
        GUI.Box(new Rect(0, 0, 800, 600), "This box is now centered! - here you would put your main menu");

        // We need to match all BeginGroup calls with an EndGroup
        GUI.EndGroup();
    }
}
```

## BeginGroup(Rect, GUIContent)

Begin a group. Must be matched with a call to [GUI.EndGroup](/engine/6000.7/script-reference/unityengine/gui/endgroup.md).

```csharp
public static void BeginGroup(Rect position, GUIContent content)
```

### Parameters

**** (\[Rect]\(/engine/6000.7/script-reference/unityengine/rect)): Rectangle on the screen to use for the group.**** (\[GUIContent]\(/engine/6000.7/script-reference/unityengine/guicontent)): Text, image and tooltip for this group. If supplied, any mouse clicks are "captured" by the group and not If left out, no background is rendered, and mouse clicks are passed.

### Remarks

When you begin a group, the coordinate system for GUI controls are set so (0,0) is the top-left corner of the group. All controls are clipped to the group. Groups can be nested - if they are, children are clipped to their parents.

This is very useful when moving a bunch of GUI elements around on screen. A common use case is designing your menus to fit on a specific screen size, then centering the GUI on larger displays.

Additional Resources: [\_matrix](/engine/6000.7/script-reference/unityengine/gui/matrix.md), [GUI.BeginScrollView](/engine/6000.7/script-reference/unityengine/gui/beginscrollview.md)

### Examples

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

public class ExampleClass : MonoBehaviour
{
    void OnGUI()
    {
        // Constrain all drawing to be within a 800x600 pixel area centered on the screen.
        GUI.BeginGroup(new Rect(Screen.width / 2 - 400, Screen.height / 2 - 300, 800, 600));

        // Draw a box in the new coordinate space defined by the BeginGroup.
        // Notice how (0,0) has now been moved on-screen
        GUI.Box(new Rect(0, 0, 800, 600), "This box is now centered! - here you would put your main menu");

        // We need to match all BeginGroup calls with an EndGroup
        GUI.EndGroup();
    }
}
```

## BeginGroup(Rect, GUIStyle)

Begin a group. Must be matched with a call to [GUI.EndGroup](/engine/6000.7/script-reference/unityengine/gui/endgroup.md).

```csharp
public static void BeginGroup(Rect position, GUIStyle style)
```

### Parameters

**** (\[Rect]\(/engine/6000.7/script-reference/unityengine/rect)): Rectangle on the screen to use for the group.**** (\[GUIStyle]\(/engine/6000.7/script-reference/unityengine/guistyle)): The style to use for the background.

### Remarks

When you begin a group, the coordinate system for GUI controls are set so (0,0) is the top-left corner of the group. All controls are clipped to the group. Groups can be nested - if they are, children are clipped to their parents.

This is very useful when moving a bunch of GUI elements around on screen. A common use case is designing your menus to fit on a specific screen size, then centering the GUI on larger displays.

Additional Resources: [\_matrix](/engine/6000.7/script-reference/unityengine/gui/matrix.md), [GUI.BeginScrollView](/engine/6000.7/script-reference/unityengine/gui/beginscrollview.md)

### Examples

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

public class ExampleClass : MonoBehaviour
{
    void OnGUI()
    {
        // Constrain all drawing to be within a 800x600 pixel area centered on the screen.
        GUI.BeginGroup(new Rect(Screen.width / 2 - 400, Screen.height / 2 - 300, 800, 600));

        // Draw a box in the new coordinate space defined by the BeginGroup.
        // Notice how (0,0) has now been moved on-screen
        GUI.Box(new Rect(0, 0, 800, 600), "This box is now centered! - here you would put your main menu");

        // We need to match all BeginGroup calls with an EndGroup
        GUI.EndGroup();
    }
}
```

## BeginGroup(Rect, string, GUIStyle)

Begin a group. Must be matched with a call to [GUI.EndGroup](/engine/6000.7/script-reference/unityengine/gui/endgroup.md).

```csharp
public static void BeginGroup(Rect position, string text, GUIStyle style)
```

### Parameters

**** (\[Rect]\(/engine/6000.7/script-reference/unityengine/rect)): Rectangle on the screen to use for the group.**** (\[string]\(https\://learn.microsoft.com/dotnet/api/system.string)): Text to display on the group.**** (\[GUIStyle]\(/engine/6000.7/script-reference/unityengine/guistyle)): The style to use for the background.

### Remarks

When you begin a group, the coordinate system for GUI controls are set so (0,0) is the top-left corner of the group. All controls are clipped to the group. Groups can be nested - if they are, children are clipped to their parents.

This is very useful when moving a bunch of GUI elements around on screen. A common use case is designing your menus to fit on a specific screen size, then centering the GUI on larger displays.

Additional Resources: [\_matrix](/engine/6000.7/script-reference/unityengine/gui/matrix.md), [GUI.BeginScrollView](/engine/6000.7/script-reference/unityengine/gui/beginscrollview.md)

### Examples

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

public class ExampleClass : MonoBehaviour
{
    void OnGUI()
    {
        // Constrain all drawing to be within a 800x600 pixel area centered on the screen.
        GUI.BeginGroup(new Rect(Screen.width / 2 - 400, Screen.height / 2 - 300, 800, 600));

        // Draw a box in the new coordinate space defined by the BeginGroup.
        // Notice how (0,0) has now been moved on-screen
        GUI.Box(new Rect(0, 0, 800, 600), "This box is now centered! - here you would put your main menu");

        // We need to match all BeginGroup calls with an EndGroup
        GUI.EndGroup();
    }
}
```

## BeginGroup(Rect, Texture, GUIStyle)

Begin a group. Must be matched with a call to [GUI.EndGroup](/engine/6000.7/script-reference/unityengine/gui/endgroup.md).

```csharp
public static void BeginGroup(Rect position, Texture image, GUIStyle style)
```

### Parameters

**** (\[Rect]\(/engine/6000.7/script-reference/unityengine/rect)): Rectangle on the screen to use for the group.**** (\[Texture]\(/engine/6000.7/script-reference/unityengine/texture)): [Texture](/engine/6000.7/script-reference/unityengine/texture.md) to display on the group.**** (\[GUIStyle]\(/engine/6000.7/script-reference/unityengine/guistyle)): The style to use for the background.

### Remarks

When you begin a group, the coordinate system for GUI controls are set so (0,0) is the top-left corner of the group. All controls are clipped to the group. Groups can be nested - if they are, children are clipped to their parents.

This is very useful when moving a bunch of GUI elements around on screen. A common use case is designing your menus to fit on a specific screen size, then centering the GUI on larger displays.

Additional Resources: [\_matrix](/engine/6000.7/script-reference/unityengine/gui/matrix.md), [GUI.BeginScrollView](/engine/6000.7/script-reference/unityengine/gui/beginscrollview.md)

### Examples

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

public class ExampleClass : MonoBehaviour
{
    void OnGUI()
    {
        // Constrain all drawing to be within a 800x600 pixel area centered on the screen.
        GUI.BeginGroup(new Rect(Screen.width / 2 - 400, Screen.height / 2 - 300, 800, 600));

        // Draw a box in the new coordinate space defined by the BeginGroup.
        // Notice how (0,0) has now been moved on-screen
        GUI.Box(new Rect(0, 0, 800, 600), "This box is now centered! - here you would put your main menu");

        // We need to match all BeginGroup calls with an EndGroup
        GUI.EndGroup();
    }
}
```

## BeginGroup(Rect, GUIContent, GUIStyle)

Begin a group. Must be matched with a call to [GUI.EndGroup](/engine/6000.7/script-reference/unityengine/gui/endgroup.md).

```csharp
public static void BeginGroup(Rect position, GUIContent content, GUIStyle style)
```

### Parameters

**** (\[Rect]\(/engine/6000.7/script-reference/unityengine/rect)): Rectangle on the screen to use for the group.**** (\[GUIContent]\(/engine/6000.7/script-reference/unityengine/guicontent)): Text, image and tooltip for this group. If supplied, any mouse clicks are "captured" by the group and not If left out, no background is rendered, and mouse clicks are passed.**** (\[GUIStyle]\(/engine/6000.7/script-reference/unityengine/guistyle)): The style to use for the background.

### Remarks

When you begin a group, the coordinate system for GUI controls are set so (0,0) is the top-left corner of the group. All controls are clipped to the group. Groups can be nested - if they are, children are clipped to their parents.

This is very useful when moving a bunch of GUI elements around on screen. A common use case is designing your menus to fit on a specific screen size, then centering the GUI on larger displays.

Additional Resources: [\_matrix](/engine/6000.7/script-reference/unityengine/gui/matrix.md), [GUI.BeginScrollView](/engine/6000.7/script-reference/unityengine/gui/beginscrollview.md)

### Examples

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

public class ExampleClass : MonoBehaviour
{
    void OnGUI()
    {
        // Constrain all drawing to be within a 800x600 pixel area centered on the screen.
        GUI.BeginGroup(new Rect(Screen.width / 2 - 400, Screen.height / 2 - 300, 800, 600));

        // Draw a box in the new coordinate space defined by the BeginGroup.
        // Notice how (0,0) has now been moved on-screen
        GUI.Box(new Rect(0, 0, 800, 600), "This box is now centered! - here you would put your main menu");

        // We need to match all BeginGroup calls with an EndGroup
        GUI.EndGroup();
    }
}
```
