예제 #1
0
    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));
    }