/// <summary>
/// 設置GridLayoutGroup的寬高
/// </summary>
/// <param name="grid">需要調整寬高的GridLayoutGroup</param>
private void AutoGridLayoutSize(GridLayoutGroup grid)
{
int num = grid.constraintCount;//每行/列Cell約束的個數
int k = (grid.transform.childCount + num - 1) / num;
float value;
RectTransform.Axis axis;
switch (grid.constraint)
{
case GridLayoutGroup.Constraint.FixedColumnCount:
value = k * grid.cellSize.y;//列數乘以Cell的高度
value += (k - 1) * grid.spacing.y;//每列之間有間隔
value += grid.padding.top + grid.padding.bottom;//上下間隔
axis = RectTransform.Axis.Vertical;
break;
case GridLayoutGroup.Constraint.FixedRowCount:
value = k * grid.cellSize.x;//行數乘以Cell的高度
value += (k - 1) * grid.spacing.x;//每行之間有間隔
value += grid.padding.left + grid.padding.right;//左右間隔
axis = RectTransform.Axis.Horizontal;
break;
default:
Debug.LogError(grid.name + "的約束為:Flexibl!");
return;
}
(grid.transform as RectTransform).SetSizeWithCurrentAnchors(axis, value);
}