【UGUI學(xué)習(xí)筆記】RectTransform組件

RectTransform繼承于Transform


?????? 上圖中的中間九個(gè)按鈕叫做絕對(duì)布局(也有人叫九宮格),邊上的七個(gè)按鈕叫做相對(duì)布局亏狰。上圖只是為了讓用戶更好的操作役纹,下圖才是它的數(shù)值:


???????Anchors的名字叫做錨點(diǎn),其存在最小點(diǎn)與最大點(diǎn)暇唾,anchormin與anchormax均為向量促脉。

???????在Anchor下面還有一個(gè)屬性叫Pivot,軸心策州。是坐標(biāo)原點(diǎn)在UI自身左下角的0-1空間向量瘸味。


???????設(shè)置紅色框體的Pivot時(shí),其坐標(biāo)系如圖所示抽活,(0,0)表示紅色物體的左下角硫戈,(1,1)表示紅色物體的右上角。


???????下圖中黑色框體為父物體下硕,紅色框體為當(dāng)前物體丁逝。設(shè)置紅色框體的anchor時(shí)汁胆,其坐標(biāo)系如圖所示,(0,0)表示父物體的左下角霜幼,(1,1)表示父物體的右上角嫩码。中間的九個(gè)絕對(duì)布局就是anchormin與anchormax重合。邊上的七個(gè)相對(duì)布局就是anchormin與anchormax分開(kāi)罪既。


與父UI的關(guān)系:

?????? 當(dāng)UI處于絕對(duì)布局時(shí)铸题,軸心點(diǎn)與錨點(diǎn)之間的距離恒定。此時(shí)紅色框體的大小不會(huì)隨父物體的大小變化而變化琢感,位置會(huì)根據(jù)Pivot點(diǎn)到Anchor點(diǎn)的距離一致而改變丢间。

???????當(dāng)UI處于相對(duì)布局時(shí),錨點(diǎn)不再是一個(gè)點(diǎn)驹针,而是一個(gè)框子烘挫,通常稱之為錨框,有四個(gè)點(diǎn)柬甥,anchormin表示左下角饮六,anchormax表示右上角。此時(shí)紅色框體的左下角到錨框的左下角距離保持不變苛蒲,紅色框體的右上角到錨框的右上角距離保持不變卤橄。此時(shí)紅色框體的四條邊與錨框的邊間距是固定的,紅色框體的大小隨父物體的大小變化而變化臂外。

Pos (X, Y, Z) 窟扑,矩形軸心點(diǎn)(pivot)與錨點(diǎn)(anchors)之間的距離。

Left, Top, Right, Bottom寄月,矩形的四條邊與錨框(anchors)之間的間距辜膝。

RectTransform的其他屬性:

?anchoredPosition:在絕對(duì)布局下无牵,該屬性表示的是錨點(diǎn)到pivot的向量漾肮;在相對(duì)布局下,unity會(huì)根據(jù)Pivot茎毁、AnchorMin和AnchorMax計(jì)算出一個(gè)錨點(diǎn)克懊,該屬性表示的是計(jì)算出的錨點(diǎn)到Pivot的向量。

offsetmin七蜘、offsetmax:offsetmin表示的是當(dāng)前圖片的左下角相對(duì)錨框的左下角的偏移谭溉,offsetmax表示的是當(dāng)前圖片的右上角相對(duì)錨框的右上角的偏移。

絕對(duì)布局如下圖:


anchor為(0,0.5)
anchor為(0,0)

相對(duì)布局如下圖:


anchor為(0,0),(1,0)
anchor為(0,0),(1,1)

sizeDelta:尺寸變化量橡卤,該屬性表示offsetMax - offsetMin得到的向量扮念,絕對(duì)布局下即從圖片的左下角指向右上角的向量。

sizeDelta可以動(dòng)態(tài)設(shè)置Rect大斜炭狻:絕對(duì)布局下sizeDelta(x,y)與Rect的寬高是一致的柜与,可以直接通過(guò)sizeDelta的x,y來(lái)動(dòng)態(tài)設(shè)置RectTransform的對(duì)應(yīng)的寬和高巧勤;相對(duì)布局下直接調(diào)整sizeDelta可以調(diào)整Rect大小瓦呼,但是不好理解栓辜,通過(guò)offsetMin和offsetMax來(lái)動(dòng)態(tài)調(diào)整Rect的大小比較方便。

Rect:這是一個(gè)只讀屬性奠骄,前兩個(gè)參數(shù)是從Pivot指向UI自身左下角的向量迁匠,后兩個(gè)參數(shù)是UI自身的width和height剩瓶。在絕對(duì)布局和相對(duì)布局下輸出一致。

改變RectTransform的top

GetComponent<RectTransform>().offsetMax = new Vector2(GetComponent<RectTransform>().offsetMax.x, top);

改變RectTransform的Right

GetComponent<RectTransform>().offsetMax = new Vector2(right,GetComponent<RectTransform>().offsetMax.y);

改變RectTransform的bottom

GetComponent<RectTransform>().offsetMin = new Vector2(GetComponent<RectTransform>().offsetMin.x, bottom);

改變RectTransform的left

GetComponent<RectTransform>().offsetMin = new Vector2(left,GetComponent().offsetMin.y);

改變RectTransform的width城丧,height

GetComponent<RectTransform>().sizeDelta = new Vector2(width, height);

改變RectTransform的pos

GetComponent<RectTransform>().anchoredPosition3D = new Vector3(posx,posy,posz);

GetComponent<RectTransform>().anchoredPosition = new Vector2(posx,posy);

RectTransform的方法:

void GetLocalCorners(Vector3[] fourCornersArray);?

該方法表示獲取UI的四個(gè)角在以自身Pivot為原點(diǎn)的坐標(biāo)系中的坐標(biāo)延曙。作為參數(shù)的Vector3數(shù)組需要自己聲明。獲取四個(gè)角的順序是左下亡哄、左上搂鲫、右上、右下磺平。

void GetWorldCorners(Vector3[] fourCornersArray);

該方法表示獲取UI的四個(gè)角在世界坐標(biāo)系的坐標(biāo)魂仍。

void SetSizeWithCurrentAnchors(RectTransform.Axis axis,float size);

按照當(dāng)前的anchor信息來(lái)設(shè)置尺寸(實(shí)際上根據(jù)的是pivot,設(shè)置的結(jié)果與anchor無(wú)關(guān))拣挪,有兩個(gè)參數(shù)擦酌,第一個(gè)是Axis類型的值,需要指定一個(gè)方向菠劝,水平或垂直赊舶;第二個(gè)參數(shù),是本身的寬高赶诊。

例:將寬高設(shè)為(100,30)笼平。

RectTransform rt = GetComponent<RectTransform>();

rt.SetSizeWithCurrentAnchors(RectTransform.Axis.Horizontal,100);

rt.SetSizeWithCurrentAnchors(RectTransform.Axis.Vertical,30);

void SetInsetAndSizeFromParentEdge(RectTransform.Edge edge,float inset,float size);

設(shè)置當(dāng)前UI相對(duì)父UI邊的距離及當(dāng)前UI的尺寸,第一個(gè)參數(shù)是一個(gè)Edge類型的值舔痪,需要指定以父對(duì)象的哪個(gè)邊為基準(zhǔn)(也就是Top寓调、Bottom、Left锄码、Right四個(gè)值之中的一個(gè)夺英,即對(duì)齊方式); 第二個(gè)參數(shù)滋捶,是離指定邊的距離痛悯; 第三個(gè)參數(shù),是本身的寬度或者高度重窟。

例:將寬高設(shè)為(100,30)载萌,與父UI的右邊間距為0,與底邊間距為0。

RectTransform rt = GetComponent<RectTransform>();

rt.SetInsetAndSizeFromParentEdge(RectTransform.Edge.Right, 0, 100);

rt.SetInsetAndSizeFromParentEdge(RectTransform.Edge.Bottom, 0, 30);

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末扭仁,一起剝皮案震驚了整個(gè)濱河市可缚,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌斋枢,老刑警劉巖帘靡,帶你破解...
    沈念sama閱讀 221,198評(píng)論 6 514
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異瓤帚,居然都是意外死亡描姚,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,334評(píng)論 3 398
  • 文/潘曉璐 我一進(jìn)店門(mén)戈次,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)轩勘,“玉大人,你說(shuō)我怎么就攤上這事怯邪“硌埃” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 167,643評(píng)論 0 360
  • 文/不壞的土叔 我叫張陵悬秉,是天一觀的道長(zhǎng)澄步。 經(jīng)常有香客問(wèn)我,道長(zhǎng)和泌,這世上最難降的妖魔是什么村缸? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 59,495評(píng)論 1 296
  • 正文 為了忘掉前任,我火速辦了婚禮武氓,結(jié)果婚禮上梯皿,老公的妹妹穿的比我還像新娘。我一直安慰自己县恕,他們只是感情好东羹,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,502評(píng)論 6 397
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著忠烛,像睡著了一般属提。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上况木,一...
    開(kāi)封第一講書(shū)人閱讀 52,156評(píng)論 1 308
  • 那天垒拢,我揣著相機(jī)與錄音,去河邊找鬼火惊。 笑死,一個(gè)胖子當(dāng)著我的面吹牛奔垦,可吹牛的內(nèi)容都是我干的屹耐。 我是一名探鬼主播,決...
    沈念sama閱讀 40,743評(píng)論 3 421
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼惶岭!你這毒婦竟也來(lái)了寿弱?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 39,659評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤按灶,失蹤者是張志新(化名)和其女友劉穎症革,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體鸯旁,經(jīng)...
    沈念sama閱讀 46,200評(píng)論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡噪矛,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,282評(píng)論 3 340
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了铺罢。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片艇挨。...
    茶點(diǎn)故事閱讀 40,424評(píng)論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖韭赘,靈堂內(nèi)的尸體忽然破棺而出缩滨,到底是詐尸還是另有隱情,我是刑警寧澤泉瞻,帶...
    沈念sama閱讀 36,107評(píng)論 5 349
  • 正文 年R本政府宣布脉漏,位于F島的核電站,受9級(jí)特大地震影響袖牙,放射性物質(zhì)發(fā)生泄漏鸠删。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,789評(píng)論 3 333
  • 文/蒙蒙 一贼陶、第九天 我趴在偏房一處隱蔽的房頂上張望刃泡。 院中可真熱鬧,春花似錦碉怔、人聲如沸烘贴。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 32,264評(píng)論 0 23
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)桨踪。三九已至,卻和暖如春芹啥,著一層夾襖步出監(jiān)牢的瞬間锻离,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,390評(píng)論 1 271
  • 我被黑心中介騙來(lái)泰國(guó)打工墓怀, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留汽纠,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,798評(píng)論 3 376
  • 正文 我出身青樓傀履,卻偏偏與公主長(zhǎng)得像虱朵,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,435評(píng)論 2 359

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