Logo
Layout

Radial Layout Group

Arrange UI elements along a circular or arc shaped layout

Overview

Radial Layout Group arranges UI elements along a circle or a partial arc. You can configure angles, spacing, radius, direction, child rotation, and size control. It behaves similarly to Unity's built in layout groups but distributes children around a circular path instead of linear rows or columns.

Preview

Usage

Add Radial Layout Group component to a RectTransform

Add child UI elements under it

The layout updates automatically when values change


Properties

NameTypeDescription
radiusScalefloatScales the calculated base radius (0.1 to 2)
centerOffsetVector2Shifts the circle's center point
startAnglefloatBeginning angle of the arc in degrees
endAnglefloatEnding angle of the arc in degrees
clockwiseboolFlips rotation direction
evenDistributionboolSpace children evenly across arc range
customSpacingfloatAngle spacing used only when evenDistribution is disabled
faceCenterboolRotates each child so it faces inward toward the circle center
controlChildSizeboolAutomatically applies the defined child size
childSizeVector2Width and height applied when size control is active

Code Example

RadialLayoutGroupExample.cs
using UnityEngine;
using Evo.UI;

public class RadialLayoutGroupExample : MonoBehaviour
{
    public RadialLayoutGroup radial;

    void Start()
    {
        // Base radius scaling
        radial.RadiusScale = 1f;

        // Create a half circle from -90 to 90 degrees
        radial.StartAngle = -90f;
        radial.EndAngle = 90f;

        // Clockwise or counter clockwise layout
        radial.Clockwise = true;

        // Even spacing between children
        radial.EvenDistribution = true;

        // Optional: custom spacing if EvenDistribution is false
        radial.CustomSpacing = 30f;

        // Align children toward the circle center
        radial.FaceCenter = true;

        // Control child size from the layout
        radial.ControlChildSize = true;
        radial.ChildSize = new Vector2(60f, 60f);

        // Offset the entire circle slightly upward
        radial.CenterOffset = new Vector2(0f, 20f);
    }
}

On this page