public static Vector2 FitterGrid(GridLayoutGroup grid, int count, float oriWidth) { RectTransform gridTrans = grid.GetRect(); gridTrans.sizeDelta = new Vector2(oriWidth, 0); int row = 0; int maxCountOneRow = (int)((gridTrans.sizeDelta.x - grid.padding.left - grid.padding.right) / (grid.cellSize.x + grid.spacing.x)); maxCountOneRow = maxCountOneRow > 0 ? maxCountOneRow : 1; if (count < maxCountOneRow) { float widthNew = grid.padding.left + grid.padding.right + count * (grid.spacing.x + grid.cellSize.x); gridTrans.sizeDelta = new Vector2(widthNew, gridTrans.sizeDelta.y); row = 1; } else { row = (count / maxCountOneRow) + 1; } float height = grid.padding.top + grid.padding.bottom + row * (grid.spacing.y + grid.cellSize.y); gridTrans.sizeDelta = new Vector2(gridTrans.sizeDelta.x, height); return(GetLeftBottom(gridTrans)); }