Unity3D UGUI锚点布局知识

Unity3D UGUI锚点布局知识

好久没碰unity3d UGUI的东西了,刚好回顾下以前知识,做个总结

UGUI的锚点,布局概念

unity中的ui元素是有严格的父子关系的,子物体的位置是根据父物体的变化而变化的,而子物体和父物体联系的桥梁就是Anchor。ugui的UI控件都会有个RectTransform的组件,你可以从这个组件里获取锚点和布局信息,Anchor在Recttransform面板中表现为
两个值:anchorMax,anchorMin (默认左下角为0,0点,右上角为1,1点)
Unity3D UGUI锚点布局知识
四个锚点在一起那么两个值就是:anchorMin(0.5,0.5),anchorMax(0.5,0.5)

我们再理解下绝对布局以及相对布局这两个概念,绝对布局如下图:Unity3D UGUI锚点布局知识
在这附图上圈住的中间九种布局样式,它们上方的参数会是这几个PosX,PosY,PosZ,Width,Height参数,首先说说Width和Height,它俩个表示在这些绝对布局的情况下无论分辨率是多少,父物体多大,该UI元素的大小是恒定的,而剩下的PosX,PosY,PosZ表征的就是Pivot (接下来会有Pivot的讲解) 到锚点的距离

其他的样式都是相对布局,比如我们选最后一个布局样式,参数表现如下图:
Unity3D UGUI锚点布局知识
left,right,top,bottom就代表了该UI控件左右上下边距离四个锚点所形成的锚框的左右上下边的距离,其他一些相对布局样式参数意义类似,不再熬述。

RectTransform 组件相关参数意义

1.pivot

如图所示,如果pivot 设置在左下角,就是(0,0),右上角就是(1,1),默认为正中心位置(0.5,0.5)
Unity3D UGUI锚点布局知识

2.OffsetMax,OffsetMin

如图:Unity3D UGUI锚点布局知识
这个OffsetMin的值就是UI元素的左下角的坐标,减去AnchorMin的值,得到一个从AnchorMin指向元素左下角的向量(vector2类型),这个OffsetMax的值就是UI元素的右上角的坐标,减去AnchorMax的值,得到一个从AnchorMax指向元素右上角的向量(vector2类型),那么这两个值有什么用呢,因为这两个值是可读可写的,所以在锚框的情况下我们可以在代码里面动态的去调整UI元素相对边界的距离,其次更重要的是,利用这这两个值就可以计算出sizeDelta的值了!

3.sizeDelta

sizeDelta=OffsetMax-OffsetMin,得到的是一个vector2类型的值,那么这个值在绝对布局和相对布局下的意义是什么呢?绝对布局下其实就代表了UI控件的长和宽,相对布局 大家结合上面两个参数的图例自行思考一下。

4.rect

rect中的属性,不与UI控件所在的位置有关,只和其自身属性相关,所以其中的width和height属性就可以让我们在任何情况下取得元素的大小

5.anchorPosition

在绝对布局下,anchorPositon表示的是pivot点在以锚点为坐标原点的坐标系下的坐标,如果在相对布局下表示的就是pivot点在以锚框中心点为坐标原点的坐标系下的坐标,我们可以通过改变anchorPosition的值直接改变UI控件位置,例如 在绝对布局下用代码 anchorPosition=new vector2(0,-100),它的效果如图:
Unity3D UGUI锚点布局知识