Rect Transform

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:矩形左下角相对于左下角锚柄的偏移量。
    Rect Transform
    Rect Transform

  • 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的宽和高
    Rect Transform


综上所述:

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不是在框架的末尾更新,而是在调用该方法时更新。