1. 程式人生 > >Unity3D 官方文件 UGUI總覽 自動佈局元件的介紹

Unity3D 官方文件 UGUI總覽 自動佈局元件的介紹

版本:unity 5.6  語言:C#

總起:

自動佈局元件可以根據元素的內容自動調節元素的佈局,在和滾動列表配合顯示動態元素時比較方便。

擁有Layout Element指令碼的是子元素,放在相應的Layout Group父節點上,Layout Group就會根據其Width、Height進行佈局。

自動佈局元件:

Layout Element

自動佈局的元素,任何的需要自動佈局的GameObject都需要新增此指令碼。


Min Width:佈局元素最小的寬度;

Min Height:佈局元素最小的高度;

Preferred Width:佈局元素首選的寬度;

Preferred Height:佈局元素首選的高度;

Flexible Width:彈性寬度;

Flexible Height:彈性高度;

以上三種寬高遵循以下原則進行適配:

1.首先Min的寬高會被適配;

2.如果有足夠的空間,則Preferred的寬高會被適配;

3.如果有剩餘的空間,則Flexible的寬高會被適配。

前兩個比較好理解,空間不夠就Min,空間夠,儘量Preferred,那麼第三種是什麼意思呢?

如果分配完Preferred還有剩餘空間,那麼Layout Group元件會根據Flexible的比例將剩餘空間分配給子元素。假設A為1,B為2,C為0,剩餘了300的空間,則A會分到100,B會分到200,而C不會分到空間。

要使Layout Group可以控制其子節點的大小,請勾選其上的Control Child Size,以上設定才能生效。

Content Size Fitter

該指令碼可以根據子元素的寬高適配Layout的寬高,跟上一個指令碼的作用剛好相反:


Horizontal Fit:水平的適配方式;

Vertical Fit:垂直的適配方式;

適配的三種方式:

1.None,不進行適配;

2.Minimum,根據元素的最小寬度進行適配;

3.Preferred,根據元素的首選寬度進行適配。

Aspect Ratio Fitter

根據比例控制當前的寬高:


Aspect Mode:控制的模式:

1.None,不進行控制;

2.Width Controls Height,寬控制高;

3.Height Controls Width,高控制寬;

4.Fit In Parent,寬高比例為1:1,以父節點的寬高最小值為該節點的寬高;

5.Envelope Parent,寬高比例為1:1,以父節點的寬高最大值為該節點的寬高;

6.Aspect Ratio(2017),寬高比。

Horizontal Layout Group

水平佈局,元素會一個挨著一個沿著水平方向排過去,如果超過了這個該Layout Group寬度,並不會換行,而且直接繼續排下去:


Padding:Layout邊緣的間隙;

Spacing:Layout元素之間的間隙;

Child Alignment:子元素的對齊方式,就是文字對齊的那九種,不多說了;

Control Child Size:是否會控制子元素的寬高,只有啟用該選項Layout Element的設定才會起作用;

Child Force Expand:是否強制子元素擴張以填滿多餘空間,該選項不受Flexible屬性的影響,並且優先順序比Flexible屬性高,以1:1的比例進行分配。

Vertical Layout Group

垂直佈局,與水平佈局類似,不多說了。

Grid Layout Group

網格佈局,將元素依次排入網格中,如果超過寬度或高度,則換行:


Padding:Layout邊緣的間隙;

Cell Size:每個元素的尺寸,該值會控制子元素的寬高;

Start Corner:第一個元素所定位角落;

Start Axis:排列方式,一種水平、一種垂直;

Child Alignment:對齊方式,九種,不多說;

Constraint:元素換行的參考:

1.Flexible,自動適配,寬高不夠了,則換行;

2.Fixed Column Count,指定行元素的數量進行換行;

3.Fixed Row Count,指定列元素的數量進行換行。

Grid Layout Group可以配合Content Size Fitter自動計算父節點的寬高,有那麼三種模式,首先將Content Size Fitter全設定為Preferred Size:

1.Constraint設定為Fixed Row Count,優先垂直排列元素,超過則增加父節點的寬度;

2.Constraint設定為Fixed Column Count,優先水平排列元素,超過則增加父節點的高度;

3.Constraint設定為Flexible,根據元素數量,設定最佳的寬高,水平優先,同時儘量使寬高比例靠近1:1。

RectTransform幾個控制座標的方法:

如果你還是使用localPosition來手動控制UI的座標,那很有可能得到一個錯誤的結果,這邊介紹幾個控制座標的常用方法,如果對於錨點和軸點還不是很熟,可以參考我上上篇文章的介紹

RectTransform.anchoredPosition,設定軸點和錨點之間的距離,最為常用;

RectTransform.offsetMin,設定左下角小藍點於錨點的距離;

RectTransform.offsetMax,設定右上角小藍點於錨點的距離;

RectTransform.sizeDelta,就是UI的寬高;

UGUI的內容基本上差不多了,但還有個內容IMGUI,其實就是OnGUI,當然因為其效率問題,在實際的UI製作中使用的越來越少了,但是如果你製作寫Edtior指令碼,自己擴充套件Unity編輯器,這方面的知識是必不可少的。

 

下篇文章就會重點介紹這方面的知識。

個人:

稍作休息,等下繼續研究!