關(guān)于Unity中RectTransform與transform的區(qū)別
以前一直以為在Inspector面板上的是Transform,后來才發(fā)現(xiàn)原來2D是RectTransform,3D是Transform
3D面板上顯示的是位置坐標(biāo)組件Transform,2D面板上顯示的是位置坐標(biāo)組件RectTransform
RectTransform是Transform的子類
可以這樣強(qiáng)制轉(zhuǎn)換,反過來則不行
gameObject.GetComponent<RectTransform>().anchoredPosition3D = new Vector3(x,y,z);
”錨點(diǎn)“在”父物體“中的位置和樣式,取值范圍為0(父物體左下) - 1(父物體右上)。
當(dāng)值的最大和最小不相同的時(shí)候表示一個(gè)區(qū)間,這時(shí)錨點(diǎn)會(huì)散開,錨點(diǎn)的一邊在最小值上,錨點(diǎn)的一邊在最大值上,都一樣的時(shí)候就會(huì)如上圖在一個(gè)點(diǎn)上
特性: 決定當(dāng)父物體改變的時(shí)候子物體的位置和 大小
RectTransform是繼承transform的,它是針對(duì)unity中ui的,具體在表現(xiàn)上可以這樣看待,凡是在在canvas組件下或者具有canvas組件的2d對(duì)象,他都recttransform組件,那些在3d空間下沒有不受canvas控制的對(duì)象都是transfrom組件。
關(guān)于recttransform的坐標(biāo)設(shè)置,我們?cè)谠O(shè)置ui對(duì)象的坐標(biāo)的時(shí)候設(shè)置的都是recttransform的坐標(biāo),他是相對(duì)于自身錨點(diǎn)的,和父對(duì)象的中心點(diǎn)沒有關(guān)系應(yīng)該這樣設(shè)置。
RectTransform組件還有一個(gè)anchoredPosition字段,它是忽略z坐標(biāo)的,一般使用anchoredPosition3D 進(jìn)行設(shè)置
我們通常也會(huì)這樣設(shè)置ui的坐標(biāo)
gameObject.transform.localPosition = new Vector3(x,y,z)
但其實(shí)這樣是不準(zhǔn)確的,它的位置是相對(duì)于父節(jié)點(diǎn)的中心點(diǎn)的,只有在特殊條件下才會(huì)正確,就是在父節(jié)點(diǎn)的中心點(diǎn)和子節(jié)點(diǎn)的錨點(diǎn)是重合的情況下才是正確的。

可以看到屬性面板中anchors的min和max相等的時(shí)候,也就是錨點(diǎn)是一個(gè)點(diǎn)的時(shí)候?qū)傩悦姘逯性O(shè)置坐標(biāo)是Posx posy, posz。如果錨點(diǎn)不是重合的情況下

此時(shí),他的屬性面板是這樣的

變成了left,top,posZ,right,bottom
分別代表距離左上右下和z軸的距離。

是用來計(jì)算坐標(biāo)的,即表示,自己點(diǎn)的哪個(gè)位置相對(duì)錨點(diǎn)的坐標(biāo)
總結(jié):
gameobject.transform.localposition =
這種方式是子節(jié)點(diǎn)的中心點(diǎn)piovt相對(duì)于父節(jié)點(diǎn)的中心點(diǎn)poivt的對(duì)標(biāo)
Vector3 vector3 = gameObject.GetComponent<RectTransform>().anchoredPosition3D=
這鐘是子節(jié)點(diǎn)的中心點(diǎn)相對(duì)自身的錨點(diǎn)的坐標(biāo)和父節(jié)點(diǎn)沒有關(guān)系
到此這篇關(guān)于Unity中RectTransform與transform的區(qū)別的文章就介紹到這了,更多相關(guān)Unity RectTransform與transform 區(qū)別內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
C#程序連接數(shù)據(jù)庫及讀取數(shù)據(jù)庫中字段的簡(jiǎn)單方法總結(jié)
包括C#連接Access、Oracle或者SQL Server,這里整理了一些C#連接數(shù)據(jù)庫及從讀取數(shù)據(jù)庫中字段的簡(jiǎn)單方法總結(jié),需要的朋友可以參考下2016-05-05
Unity報(bào)錯(cuò)InvalidOperationException: out of sync的解決
今天在做個(gè)東西,發(fā)現(xiàn)報(bào)錯(cuò),特此來記錄一下,本文介紹了Unity報(bào)錯(cuò)InvalidOperationException: out of sync的解決,感興趣的可以了解一下2021-05-05
C#控制臺(tái)實(shí)現(xiàn)簡(jiǎn)單飛行棋游戲
這篇文章主要為大家詳細(xì)介紹了C#控制臺(tái)實(shí)現(xiàn)簡(jiǎn)單飛行棋游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-07-07
C#調(diào)用非托管動(dòng)態(tài)庫中的函數(shù)方法
這篇文章主要介紹了C#調(diào)用非托管動(dòng)態(tài)庫中的函數(shù)方法,本文講解創(chuàng)建一個(gè)非托管動(dòng)態(tài)庫,然后在C#中調(diào)用它,需要的朋友可以參考下2015-02-02
服務(wù)器端C#實(shí)現(xiàn)的CSS解析器
服務(wù)器端C#實(shí)現(xiàn)的CSS解析器2008-09-09
C#實(shí)現(xiàn)對(duì)數(shù)組進(jìn)行隨機(jī)排序類實(shí)例
這篇文章主要介紹了C#實(shí)現(xiàn)對(duì)數(shù)組進(jìn)行隨機(jī)排序類,實(shí)例分析了C#數(shù)組與隨機(jī)數(shù)操作技巧,非常具有實(shí)用價(jià)值,需要的朋友可以參考下2015-03-03

