咱們都知道,Unity3D中全部的GameObject都必需要攜帶一個Transform組件,且該組件沒法移除,那麼做爲UI顯示的GameObject則不是攜帶Transform而是使用Unity3D專門爲UI組件設計的Rect Transform組件,以下:佈局
另外說一下,Canvas Renderer也是UI組件必須攜帶的組件。設計
咱們來看一下其爲咱們提供的功能:3d
位置是以像素爲單位,其具體的值則以錨點爲準,表示和錨點距離,其中x軸從左到右的數值愈來愈大,y軸從下到上的數值愈來愈大,其中的Pos Z和Transform中的position.z效果一致,但不是使用該值來表示UI的深度。保留該值估計是爲了在3D UI的一些效果實現上的考慮。orm
不一樣於縮放,這兩個值設置了UI的尺寸,爲負並不會翻轉UI而是直接不顯示。對象
上面的兩個按鈕,上方的按鈕是設置width爲320,下方則是將width爲160的按鈕的scale x設置爲2。blog
效果同Transform,通常配合Tween使用。it
效果同Transform,通常配合Tween使用。io
不經過NGUI的深度,在UGUI中的深度徹底使用樹形結構來表示,同一層級裏位於下方的節點會覆蓋掉位於上方的節點,以下:form
修改一下樹形顯示列表後以下:配置
Rect Transform除了上面提到的功能外,還提供了描點功能,該功能主要實現相對佈局的功能。
同時咱們還能夠很是直觀的配置描點:
錨點描述的是當前UI的父對象的位置信息。而錨點則表示當前對象座標的(0, 0)點。
咱們能夠發現有Left、Center、Right、Top、Middle及Bottom六個設置項,這6個項目能夠組合出9種形式的錨點,分別對應了當前UI父對象的9個方向的位置,這樣方便咱們的UI作相對位置的調整,好比當UI的座標爲(0, 0),選擇CenterMiddle則當前UI爲居中狀態,而選擇TopLeft則UI會位於父對象的左上角。
CenterMiddle:
TopLeft:
除了上面說到的還有一種stretch狀態,該狀態則表示當前UI距離父級UI邊緣的距離,當設定了以後則是使用一種相似相對位置的方式來定義UI的位置及尺寸,咱們看下:
當咱們選擇水平和垂直都爲stretch時,Pos X、Pos Y、Width和Height都改變爲Left、Top、Right及Bottom,即便用了相對位置來排列,咱們調整一下看看。
咱們發現按鈕始終和父級保持10個像素的距離,調整父級的尺寸會修改子級的尺寸,以下:
咱們發現按鈕始終爲一種相對的位置呈現。
咱們以前定義錨點都是直接在下拉菜單中選擇,那麼錨點是否能夠自定義,答案是確定的,好比當咱們須要下面的效果時就須要自定義Anchor了。
咱們但願子UI的尺寸始終和父UI的尺寸保持必定的比例,好比不管父UI多大,子UI都佔其10%的空間。
咱們只須要將子UI的錨點設置爲一個合適的值便可,好比設置爲子UI的尺寸,以下:
咱們複製幾個改變大小看看效果:
註冊點或者叫作中心點,若是說Anchor表示的是UI的父級的位置,那麼Pivot則表示UI自己的(0, 0)點的位置。
咱們首先開啓Pivot:
而後就能夠在場景中修改UI的Pivot了,以下:
這個小藍圈就是Button組件的中心點,表示Button組件的(0, 0)點。
下面咱們看一個實例:
我但願在屏幕的右上方顯示一個按鈕且按鈕和屏幕的間距爲10,只須要將按鈕的中心點也設置到右上方便可,以下:
表示是否忽略掉物體的旋轉。點開不能對物體進行旋轉。
表示當修改Anchor時UI的位置及尺寸是否會根據Anchor進行匹配,點開能夠進行匹配。