Rect Transform屬性
Rect Transform組件是Transform組件的2D佈局對應組件。當Transform表示單個點時,Rect Transform表示一個可以放置UI元素的矩形。如果Rect Transform的父變換也是Rect Transform,子矩形變換也可以指定相對於父矩形的位置和大小。
屬性:
-
anchoredPosition:這個RectTransform的Pivot相對於錨點的位置(當四個錨在一起時)。
錨固位置是考慮錨點的RectTransform的pivot的位置。錨的基準點是錨的位置。如果錨沒有在一起,Unity會使用樞軸位置作爲參考來估計四個錨的位置。
-
anchoredPosition3D:這個RectTransform的Pivot相對於錨點的3D位置
-
anchorMax:面板Anchors的Max值,爲右上角錨柄在父RectTransform中相對比例位置
-
anchorMin:面板Anchors的Min值,爲右上角錨柄在父RectTransform中相對比例位置
相對比例位置:(0.5,0.5)爲父物體正中心,(0,0)爲父物體Rect左下角,(1,1)爲父物體Rect右上角,其他是一樣的比例算法
-
offsetMax:矩形右上角相對於右上角錨柄的偏移量。
-
offsetMin:矩形左下角相對於左下角錨柄的偏移量。
-
pivot:旋轉、大小和縮放修改發生在主軸Pivot點周圍,因此Pivot的位置會影響旋轉、調整大小或縮放的結果。(那個小圓圈)
-
rect:在Transform的局部空間中計算出的矩形。
-
sizeDelta:這個RectTransform的大小相對於錨之間的距離。
-
ForceUpdateRectTransforms:強制recttransform內部數據的重新計算。
-
GetLocalCorners(Vector3[] fourCornersArray):在變換的局部空間中得到計算矩形的角。
得到的是:矩形四個角相對於軸心Pivot的位置(四個角依次爲:左下-左上-右上-右下)
-
GetWorldCorners(Vector3[] fourCornersArray):在變換的世界空間中得到計算矩形的角。
得到的是:矩形四個角相對於UICanvas左下角點的位置(待測試驗證)(四個角依次爲:左下-左上-右上-右下)
-
SetInsetAndSizeFromParentEdge(Edge edge, float inset, float size):設置該矩形相對於父矩形指定邊緣的距離,同時設置其大小。
使該矩形的edge邊離父矩形的edge邊inset距離,高度/寬度爲size
-
SetSizeWithCurrentAnchors(Axis axis, float size):使所計算的RectTransform爲指定軸上的給定大小。
不改變Rect的Pivot位置和座標,不改變錨點位置,設置Rect的寬和高
綜上所述:
1.使UI自適應父物體大小位置:
rect.anchorMin = new Vector2(0,0);
rect.anchorMax = new Vector2(1,1);//對其錨柄
rect.offsetMin = new Vector2(0,0);
rect.offsetMax = new Vector2(0, 0);//調整間距
2.注意,一些RectTransform計算是在計算UI頂點之前在框架的末尾執行的,以確保它們與整個框架中執行的所有最新更改保持一致。這意味着在Start回調和first Update回調中還沒有第一次計算它們。
您可以通過創建一個Start()回調並向其添加**Canvas.ForceUpdateCanvases()**方法來解決這個問題。這將迫使Canvas不是在框架的末尾更新,而是在調用該方法時更新。