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編輯器,這方面的知識是必不可少的。
下篇文章就會重點介紹這方面的知識。
個人:
稍作休息,等下繼續研究!