Unity UGUI系列四 Pivot Anchor

參考
Unity進(jìn)階技巧 - RectTransform詳解
Unity——RectTransform詳解
屏幕適配實(shí)用技巧
揭秘肋僧!anchoredPosition的幾何意義已卸!
localPosition與anchoredPosition轉(zhuǎn)化之瞎貓找死耗子

一鼓寺、Pivot軸心

首先為了讓大家更好的理解內(nèi)容,我在Unity中創(chuàng)建了兩個(gè)UI控件铃辖,一個(gè)Plane控件,作為父對象香到,一個(gè)Image控件闪水,最為子對象,如下圖:


image.png

Pivot我們可以暫且稱它為中心軸(這個(gè)翻譯不太準(zhǔn)確跃须,但為了便于理解站叼,先這么叫著),它是一個(gè)X,Y值范圍是0到1的點(diǎn)菇民,這個(gè)點(diǎn)的會在Anchor(錨點(diǎn))計(jì)算位置的時(shí)候會使用到尽楔,下面用一張圖來解釋Pivot點(diǎn)的位置

image.png

旋轉(zhuǎn)投储、大小和縮放修改發(fā)生在主軸Pivot點(diǎn)周圍,因此Pivot的位置會影響旋轉(zhuǎn)翔试、調(diào)整大小或縮放的結(jié)果轻要。

二复旬、Anchor

關(guān)于Anchor錨點(diǎn)可能接觸過UI的朋友都了解一些垦缅,但是Unity中Anchor應(yīng)該稱它為錨框更為合理,因?yàn)樗怯蓛蓚€(gè)錨點(diǎn)(Min驹碍,Max)組成的一個(gè)矩形壁涎,當(dāng)然也可以組成一個(gè)點(diǎn)(兩個(gè)點(diǎn)重合)


image.png

當(dāng)然上圖是兩個(gè)錨點(diǎn)重合的情況,所以看上去是一個(gè)點(diǎn)志秃,下面我們利用兩個(gè)錨點(diǎn)不重合的情況來說明一下:


image.png
三怔球、Pivot和Anchor的結(jié)合

在了解了Pivot和Anchor分別是什么后,我們就來看看Unity是如何使用這個(gè)兩個(gè)東西來控制UI的布局

1.第1種情況:兩個(gè)錨點(diǎn)重合時(shí)

我們先來看看兩個(gè)錨點(diǎn)重合時(shí)的情況浮还,這種情況是我們最常用也是最容易理解的方式

image.png

我們將Anchor錨點(diǎn)放在黑框的正中間竟坛,然后將Pivot中心軸放在紅框的正中間,然后我們改變黑框的大小和位置钧舌,看看紅框會有什么變化担汤,如下圖:
84177-0dc7e3bd42ec5e84.gif

我們從上圖可以看出,不管我們怎么拖動黑框洼冻,改變他大小和位置崭歧,紅框的Pivot點(diǎn)到Anchor點(diǎn)的距離是始終不變的,也就是說紅框物體會參照錨點(diǎn)來實(shí)時(shí)調(diào)整自己的位置撞牢,使自己的Pivot點(diǎn)到錨點(diǎn)的距離始終保持一致率碾,而且值得一提的是,在這種情況下屋彪,紅框物體的RectTransform組件中的屬性是Width和Height所宰,這個(gè)屬性在后面的情況中會發(fā)生變化,大家需要注意下

image.png

總結(jié)下第1種情況的特點(diǎn)就是:子物體的大小不會隨著父物體的大小變化而變化畜挥,但是位置會根據(jù)Pivot點(diǎn)到Anchor點(diǎn)的距離一致的原則發(fā)生對應(yīng)的變化

2.第2種情況:兩個(gè)錨點(diǎn)不重合時(shí)歧匈,即錨框的情況

當(dāng)兩個(gè)錨點(diǎn)(AnchorMin和AnchorMax)不重合時(shí),兩點(diǎn)就會確定一個(gè)矩形砰嘁,這個(gè)矩形就是我們的錨框件炉,如下圖中的綠框就是我們的錨框區(qū)域

image.png

此時(shí)我們再觀察一下紅框物體的RectTransform屬性,發(fā)現(xiàn)屬性分別變成了Left矮湘、Top斟冕、Right、Bottom
image.png

那么這4個(gè)屬性分別表示什么呢缅阳?我們看看下面的這個(gè)圖
image.png

從上圖我們看出磕蛇,Unity以錨框的左下角為坐標(biāo)系的原地(0, 0)景描,然后紅框的Left和Bottom兩個(gè)數(shù)確定紅框左下角的點(diǎn)在坐標(biāo)系中的位置,原點(diǎn)和紅框左下角的點(diǎn)確定一段距離(即上圖的綠色箭頭)秀撇,不管黑框如何變化超棺,這段距離都保持不變

image.png

同理,如上圖所示呵燕,Unity以錨框的右上角為原點(diǎn)(0,0)棠绘,然后紅框的Right和Top兩個(gè)數(shù)確定紅框的右上角的在坐標(biāo)系中的位置,原地和紅框的右上角的點(diǎn)確定一段距離(即上圖的綠色箭頭)再扭,不管黑框如何邊框氧苍,這段距離都保持不變

在黑框大小和位置變化的時(shí)候,Unity會保證紅框的左下角到錨框的左下角距離不變泛范,同時(shí)紅框的右上角到錨框的右上角距離不變让虐,來確定紅框的相對位置和大小,看下圖來感受一下變化:


84177-920f57d425ee4257.gif

注意上圖中紅框左下角到黑框左下角的距離罢荡,以及紅框右上角到黑框右上角的距離赡突,他們都是不變的

3.預(yù)置常見布局方式

快速設(shè)置Anchor,加快捷鍵能同時(shí)設(shè)置pivot或position


image.png
4.Unity中對UGUI錨點(diǎn)的理解
image.png
  • 四個(gè)錨點(diǎn)区赵,相對于四根釘子惭缰,釘在Image的父級元素上。
  • 四個(gè)實(shí)心藍(lán)點(diǎn)惧笛,相當(dāng)于四個(gè)紐扣从媚,縫在Image的四個(gè)邊上。
  • 錨點(diǎn)和紐扣之間被四根無形的鋼絲鏈接患整,注意是鋼絲拜效,因?yàn)椴粫炜s。
  • 如果把Image調(diào)整好了大小各谚,現(xiàn)在想讓他隨著屏幕的變化進(jìn)行縮放紧憾,那么就把四個(gè)錨點(diǎn),拖拽到四個(gè)紐扣上昌渤,相對于把Image的四個(gè)角釘在了父級元素上赴穗,父級元素縮放就會拽著Image進(jìn)行縮放,比例是一致的膀息。
  • 錨點(diǎn)合并在一起般眉,相當(dāng)于把Image四個(gè)角往同一個(gè)方向拽,所以不會改變Image的大小潜支。
5.Unity——RectTransform詳解

unity中的ui元素是有嚴(yán)格的父子關(guān)系的甸赃,子物體的位置是根據(jù)父物體的變化而變化的,而子物體和父物體聯(lián)系的橋梁就是Anchor冗酿。之所以anchorMax和anchorMin的值是小數(shù)埠对,是因?yàn)槠浔碚鞯氖窃擖c(diǎn)所在位置占父物體大小的比例络断。

a.絕對布局

所謂的絕對布局,就是出現(xiàn)錨點(diǎn)的情況项玛,此時(shí)的recttransform面板中的屬性變成PosX,PosY,PosZ,Width,Height貌笨,這五個(gè)屬性,首先說說Width和Height襟沮,在絕對布局的情況下無論分辨率是多少锥惋,父物體多大,該UI元素的大小是恒定的臣嚣,如下圖所示


image.png
b.相對布局

所謂相對布局净刮,就是出現(xiàn)錨框的情況剥哑。在這種情況下UI元素的四個(gè)角硅则,距離四個(gè)對應(yīng)的錨點(diǎn)的距離是不變的,在這種情況下RectTransform的屬性又變?yōu)榱薒eft,Top,Right,Bottom,PosZ株婴,其中的PosZ表征的是該元素到父物體在Z軸上的偏移怎虫,利用這個(gè)值可以調(diào)整UI元素的顯示順序,不過我用的不多困介,這里不作太多討論大审。剩下的四個(gè)值應(yīng)該很好理解了,就是UI元素的每一條邊距離父物體的每一條邊的距離座哩。


image.png
四徒扶、anchoredPosition屬性詳解

anchoredPosition根據(jù)名字的含義,我們大概可以猜出他是根據(jù)anchor錨點(diǎn)得出來個(gè)一個(gè)位置屬性根穷,他本身是一個(gè)點(diǎn)姜骡,如果在AnchorMin和AnchorMax是重合的情況下,anchoredPosition就是表示錨點(diǎn)到Pivot的位置屿良,如下圖所示:


image.png

但是如果AnchorMin和AnchorMax不重合的時(shí)候圈澈,anchoredPosition就比較復(fù)雜了,在這種情況下尘惧,Unity會根據(jù)Pivot康栈、AnchorMin和AnchorMax計(jì)算出一個(gè)錨點(diǎn),然后在通過Pivot和錨點(diǎn)來得出anchoredPosition的位置

五喷橙、offsetMin和offsetMax詳解

offsetMin和offsetMax這兩個(gè)屬性比較好理解啥么,其中offsetMin表示物體(本文中的紅框)左下角相對AnchorMin的偏移,offsetMax表示物體右上角相對AnchorMax的偏移

anchor(0,0)
anchorMin(0,0) anchorMax(1,1)
六贰逾、sizeDelta詳解

sizeDelta就是offsetMax - offsetMin的值悬荣,即物體左下角到右上角的變量,如下圖所示:


image.png
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末似踱,一起剝皮案震驚了整個(gè)濱河市隅熙,隨后出現(xiàn)的幾起案子稽煤,更是在濱河造成了極大的恐慌,老刑警劉巖囚戚,帶你破解...
    沈念sama閱讀 207,113評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件酵熙,死亡現(xiàn)場離奇詭異,居然都是意外死亡驰坊,警方通過查閱死者的電腦和手機(jī)匾二,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,644評論 2 381
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來拳芙,“玉大人察藐,你說我怎么就攤上這事≈墼” “怎么了分飞?”我有些...
    開封第一講書人閱讀 153,340評論 0 344
  • 文/不壞的土叔 我叫張陵,是天一觀的道長睹限。 經(jīng)常有香客問我譬猫,道長,這世上最難降的妖魔是什么羡疗? 我笑而不...
    開封第一講書人閱讀 55,449評論 1 279
  • 正文 為了忘掉前任染服,我火速辦了婚禮,結(jié)果婚禮上叨恨,老公的妹妹穿的比我還像新娘柳刮。我一直安慰自己,他們只是感情好痒钝,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,445評論 5 374
  • 文/花漫 我一把揭開白布秉颗。 她就那樣靜靜地躺著,像睡著了一般午乓。 火紅的嫁衣襯著肌膚如雪站宗。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,166評論 1 284
  • 那天益愈,我揣著相機(jī)與錄音梢灭,去河邊找鬼。 笑死蒸其,一個(gè)胖子當(dāng)著我的面吹牛敏释,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播摸袁,決...
    沈念sama閱讀 38,442評論 3 401
  • 文/蒼蘭香墨 我猛地睜開眼钥顽,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了靠汁?” 一聲冷哼從身側(cè)響起蜂大,我...
    開封第一講書人閱讀 37,105評論 0 261
  • 序言:老撾萬榮一對情侶失蹤闽铐,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后奶浦,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體兄墅,經(jīng)...
    沈念sama閱讀 43,601評論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,066評論 2 325
  • 正文 我和宋清朗相戀三年澳叉,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了隙咸。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,161評論 1 334
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡成洗,死狀恐怖五督,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情瓶殃,我是刑警寧澤充包,帶...
    沈念sama閱讀 33,792評論 4 323
  • 正文 年R本政府宣布,位于F島的核電站碌燕,受9級特大地震影響误证,放射性物質(zhì)發(fā)生泄漏继薛。R本人自食惡果不足惜修壕,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,351評論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望遏考。 院中可真熱鬧慈鸠,春花似錦、人聲如沸灌具。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,352評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽咖楣。三九已至督笆,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間诱贿,已是汗流浹背娃肿。 一陣腳步聲響...
    開封第一講書人閱讀 31,584評論 1 261
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留珠十,地道東北人料扰。 一個(gè)月前我還...
    沈念sama閱讀 45,618評論 2 355
  • 正文 我出身青樓,卻偏偏與公主長得像焙蹭,于是被迫代替她去往敵國和親晒杈。 傳聞我的和親對象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,916評論 2 344

推薦閱讀更多精彩內(nèi)容