UGUI默认提供了横竖布局组件, 但有时候还需要一种扇形布局的组件,如下图:
image.png
方法1:
使用HorizontalLayoutGroup,根据规则(三角函数)用代码修改每个item的Y.
方法2:
使用C#写一个圆形(包含扇形)布局组件,以便扩展更多,代码如下:
using UnityEngine;
using UnityEngine.UI;
/// 扇形布局组件
/// Danny Yan
[AddComponentMenu("Layout/Circle Layout Group", 150)]
public class CircleLayoutGroup : LayoutGroup
{
public enum LayoutMode
{
/// 平均分布
Hypodispersion = 0,
/// 扇形分布
Sector = 1,
}
[Header("分布模式: Hypodispersion(圆形平均分布) Sector(扇形分布)")]
public LayoutMode mode = LayoutMode.Hypodispersion;
[Header("半径")]
public float radius = 0;
[Header("起始角度")]
public float initAngle = 0;
[Header("是否保持弧度值不变")]
public bool keepRadLen = false;
[Header("弧度保持不变的值(keepRadLen为true时有效)")]
public float keepRadLenVal = 0f;
[Header("扇形分布范围")]
public float sectorAngle = 0;
[Header("扇形分布时且keepRadLen为false时,是否中间对齐到扇形中心,否则两端对齐")]
public bool sectorAlignCenter = false;
[Header("扇形分布且sectorAlignCenter为false时,是否为逆时针")]
public bool sectorClockwise = true;
// public float fDistance;
// [Range(0f, 360f)]
// public float MinAngle, MaxAngle, StartAngle;
protected override void OnEnable()
{
base.OnEnable();
CalculateRadial();
}
public override void SetLayoutHorizontal()
{
//