Unity3d讓GridLayoutGroup按照子物體的數量自動調整寬高
阿新 • • 發佈:2021-09-01
藍閃的部落格 http://www.cnblogs.com/stan-si//// <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); }