關(guān)于Unity中RectTransform與transform的區(qū)別
以前一直以為在Inspector面板上的是Transform,后來才發(fā)現(xiàn)原來2D是RectTransform,3D是Transform
3D面板上顯示的是位置坐標組件Transform,2D面板上顯示的是位置坐標組件RectTransform
RectTransform是Transform的子類
可以這樣強制轉(zhuǎn)換,反過來則不行
gameObject.GetComponent<RectTransform>().anchoredPosition3D = new Vector3(x,y,z);
”錨點“在”父物體“中的位置和樣式,取值范圍為0(父物體左下) - 1(父物體右上)。
當值的最大和最小不相同的時候表示一個區(qū)間,這時錨點會散開,錨點的一邊在最小值上,錨點的一邊在最大值上,都一樣的時候就會如上圖在一個點上
特性: 決定當父物體改變的時候子物體的位置和 大小
RectTransform是繼承transform的,它是針對unity中ui的,具體在表現(xiàn)上可以這樣看待,凡是在在canvas組件下或者具有canvas組件的2d對象,他都recttransform組件,那些在3d空間下沒有不受canvas控制的對象都是transfrom組件。
關(guān)于recttransform的坐標設(shè)置,我們在設(shè)置ui對象的坐標的時候設(shè)置的都是recttransform的坐標,他是相對于自身錨點的,和父對象的中心點沒有關(guān)系應(yīng)該這樣設(shè)置。
RectTransform組件還有一個anchoredPosition字段,它是忽略z坐標的,一般使用anchoredPosition3D 進行設(shè)置
我們通常也會這樣設(shè)置ui的坐標
gameObject.transform.localPosition = new Vector3(x,y,z)
但其實這樣是不準確的,它的位置是相對于父節(jié)點的中心點的,只有在特殊條件下才會正確,就是在父節(jié)點的中心點和子節(jié)點的錨點是重合的情況下才是正確的。
可以看到屬性面板中anchors的min和max相等的時候,也就是錨點是一個點的時候?qū)傩悦姘逯性O(shè)置坐標是Posx posy, posz。如果錨點不是重合的情況下
此時,他的屬性面板是這樣的
變成了left,top,posZ,right,bottom
分別代表距離左上右下和z軸的距離。
是用來計算坐標的,即表示,自己點的哪個位置相對錨點的坐標
總結(jié):
gameobject.transform.localposition =
這種方式是子節(jié)點的中心點piovt相對于父節(jié)點的中心點poivt的對標
Vector3 vector3 = gameObject.GetComponent<RectTransform>().anchoredPosition3D=
這鐘是子節(jié)點的中心點相對自身的錨點的坐標和父節(jié)點沒有關(guān)系
到此這篇關(guān)于Unity中RectTransform與transform的區(qū)別的文章就介紹到這了,更多相關(guān)Unity RectTransform與transform 區(qū)別內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
C#雙向鏈表LinkedList排序?qū)崿F(xiàn)方法
這篇文章主要介紹了C#雙向鏈表LinkedList排序?qū)崿F(xiàn)方法,涉及C#雙向鏈表的定義與排序技巧,具有一定參考借鑒價值,需要的朋友可以參考下2015-08-08C# Dictionary和SortedDictionary的簡介
今天小編就為大家分享一篇關(guān)于C# Dictionary和SortedDictionary的簡介,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧2018-10-10在WPF中合并兩個ObservableCollection集合
這篇文章介紹了在WPF中合并兩個ObservableCollection集合的方法,文中通過示例代碼介紹的非常詳細。對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2022-06-06