簡體   English   中英

具有動態單元格的 Unity Grid Layout Group

[英]Unity Grid Layout Group with dynamic cells

我正在為我的應用程序開發一家商店,我嘗試對項目使用網格布局組。 我的問題是網格中的單元格不會動態改變它們的大小,所以它是一個固定大小。 我怎樣才能使它們動態?

這是現在的樣子: 在此處輸入圖像描述

這就是當我將分辨率更改為例如 2560x1440 時的樣子: 在此處輸入圖像描述

正如您所看到的,單元格保持相同的大小並且看起來不太好。 我希望單元格的大小發生變化,以便它填滿更多空間但仍保持在 2 行。

這里有更多詳細信息:

在此處輸入圖像描述

在此處輸入圖像描述

您需要使用腳本手動更改它,有兩種方法。

  1. 更改單元格的內部大小和間距
  2. 改變局部尺度。

數字 1 的示例:

    Vector2 baseSize = new Vector2(800,600); // Base size of the screen
    Vector2 baseCellSize; // In editor Cell Size for GridLayoutComponent
    Vector2 baseCellSpacing; // In editor Cell Spacing for GridLayoutComponent
    GridLayoutGroup layoutGroup; //Component
    void Start()
    {
        layoutGroup = GetComponent<GridLayoutGroup>();
        baseCellSize = layoutGroup.cellSize;
        baseCellSpacing = layoutGroup.spacing;
    }
    
    void Update()
    {
        Vector2 screenSize = new Vector2(Screen.width, Screen.height); // Current screen size
        layoutGroup.cellSize = (screenSize / baseSize) * baseCellSize;
        layoutGroup.spacing = (screenSize / baseSize) * baseCellSpacing;
    }

請注意,這不會保持縮放正確,項目可能會被拉伸。 為此,您需要承諾在寬度或高度上進行縮放。 然后你會像這樣創建screenSize變量Vector2 screenSize = new Vector2(Screen.width, Screen.width); 注意兩個字段中的 Screen.width

編輯:您可能還想將兩個軸的內容大小擬合器設置為不受約束

canvas 是否設置為隨屏幕尺寸縮放? 否則可能是內容 object 中的錨點有問題。嘗試將其更改為拉伸。 我將它們放在一個面板中,該面板設置為在垂直和水平方向上都可以拉伸,並且它會在更改分辨率時進行調整

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM