RectTransform(位置,大小)方法详解

打开VS选中RectTransform,按下F12,出现文档。这里表示RectTransform是Transform的子类,Transform是父类,下面还有很多方法,继承自Transform属性。

Transform、RectTransform

2023-11-19T10:55:54.png

一、PosX、PosY、PosZ

PosX、PosY、PosZ

2023-11-19T10:55:37.png

三个数值的大小分别代表当前物体轴心点相对于锚点的位置。

打开Unity 3D新建Canvas,Canvas新建Image并重命名为BGImage,在BGImage下新建Image。在Inspector下找到RectTransform组件,调整PosX,PosY,PosZ的大小。
2023-11-19T10:56:13.png

PosX=0,PosY=0,PosZ=0;

修改三个数值大小,分别定义为100,100,0;发现图片轴心点在x,y方向分别增加100个单位。

2023-11-19T10:54:59.png
PosX=0,PosY=0,PosZ=0;

这里切换到Debug模式,查看参数值大小,尝试修改Anchored Position的大小,发现这里的Anchored Position的大小与PosX,PosY,PosZ大小完全对应。
2023-11-19T10:54:27.png
Debug

这里将Anchored Position的大小修改为:50、50;然后回到正常模式,发现PosX,PosY,PosZ同样变成了50、50。
2023-11-19T10:54:12.png
PosX=50,PosY=50,PosZ=0;

!https://www.ahbug.com/wp-content/uploads/2021/03/image-25.png

PosX,PosY,PosZ == Anchored Position == 锚点到轴心点(Pivot)的距离。

我们将Image轴心点(Pivot)置于父物体BGImage轴心点重合处,发现此时的Local Position数值分别为0、0、0。

Local Position == 子物体与父物体轴心点坐标关系。

二、Anchor

Anchor代表当前物体对应于其父物体的位置关系。

1.锚点X,Y的Min和Max属性相同时,RectTransform控制PosX,PosY,PosZ。
2023-11-19T10:57:05.png

Min == Max

2023-11-19T10:57:18.png

锚点在一个中心点

2.锚点X,Y的Min和Max属性不相同时,RectTransform控制,Left,Right,Top,Bottom。这里的Left,Right,Top,Bottom分别对应锚点到Image四条边的距离。
2023-11-19T10:57:36.png

Min !=Max

2023-11-19T10:58:16.png

锚点分散在四个点

三、Pivot

UI物体的中心点(小蓝点),作为整个物体的中心点,以此位置为中心对物体进行缩放。

1.X=0,Y=0时,Pivot在左下角。
2023-11-19T10:58:27.png

Pivot在左下角。

2023-11-19T10:58:46.png

X = 0 、Y = 0

2.X=1,Y=1时,Pivot在右上角。
2023-11-19T10:58:53.png
Pivot在右上角。

2023-11-19T10:59:01.png

X = 1 、Y = 1

3.将Pivot的X=0,Y=1,此时中心点在左上角,调节Rotation的数值,X设置为90,这时图片就在X轴正向旋转90度。(这里需要打开3D视角。)
2023-11-19T10:59:11.png
Rotation X=90,Y=0,Z=0。

2023-11-19T10:59:21.png

调节Rotation的数值,X设置为0,Z=60。这时图片围绕左上角逆时针旋转60度。

2023-11-19T10:59:38.png
Rotation X=0,Y=0,Z=60。

四、offsetMin、offsetMax

  • offsetMin表示物体左下角相对AnchorMin的偏移。
  • offsetMax表示物体右上角相对AnchorMax的偏移。
    2023-11-19T10:59:56.png
    相对于AnchorMin、AnchorMax

2023-11-19T11:00:02.png

相对于AnchorMin、AnchorMax

五、sizeDelta

sizeDelta == offsetMax – offsetMin

即image左下角到右上角的位置关系。
2023-11-19T11:00:12.png
sizeDelta

四个Anchor都分开时 (此时不可使用sizeDelta获取UI的宽高):

  • SizeDelta.X = -(Left + Right)
  • SizeDelta.Y = -(Top + Bottom)

六、UI宽高设置

四个锚点在一起时:sizeDelta

public Vector2 sizeDelta { get; set; }

四个锚点不在一起时:SetSizeWithCurrentAnchors

public void SetSizeWithCurrentAnchors(Axis axis, float size);

2023-11-19T11:00:24.png

RectTransform方法

© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享
评论 抢沙发
头像
欢迎您留下宝贵的见解!
提交
头像

昵称

取消
昵称表情代码图片

    请登录后查看评论内容