Pivot很常见,也很简单,有时候简单到让人忽视,再简单的东西也希望自己能够熟知,而不是一知半解。
Pivot就是中心点的意思,在UGUI里面是长这样的:
一个UI控件是一个矩形,我们先建立UI的坐标模型:以左下角为原点(0,0),按照顺时针的方向设矩形的四个角坐标为(x1y1, x1y2, x2y2, x2y1)。
现在我门可以计算Pivot.x = 0.5时,x的值。x = (x2 - x1 ) * Pivot.x = (x2 - x1) * 0.5。看公式可以看出,Pivot.x = 0.5时,x轴方向的中心点在UI的x1和x2中间,同理,Pivot.y = 0.5时,y轴方向的中心点在UI的y1和y2中间。大部分情况下,UI的Pivot.x和Pivot.y的取值都是0.5,此时中心点就是UI的中心。
接下来让我们考虑Pivot.x为其他值的情况(Pivot.y同理)
当Pivot.x = 0时,中心点的位置 x = (x2 - x1) * 0 ,此时Pivot.x的位置在x1处;
当Pivot.x = 1时,中心点的位置 x = (x2 - x1) * 1 ,此时Pivot.x的位置在x2处;
当Pivot.x = 2时,中心点的位置 x = (x2 - x1) * 2 ,此时Pivot.x的位置在 2 * x2处;
当Pivot.x = -1时,中心点的位置 x = (x2 - x1) * -1 ,此时Pivot.x的位置在 -x2处;
到这里,Pivot的分析基本就完成了。
下面有一些情况稍微提一下:
当改变UI的Pivot时,你会看到Position的坐标也会发生变化:
这是为什么呢?这是因为Pos的位置是通过移动UI的Pivot来确定的,Pivot改变后中心点发生了变化, Unity为了使改变Pivot后的UI,在场景里面的位置保持不变,便自动修改了UI的Pos的值。如果你把Pos值修改为未改变Pivot前的Pos值,你会发现Pivot在场景中的位置和改变前相同,但是UI位置变了。
另外Pivot和UI的拉伸,移动,旋转关系密切,改变Pivot会对这些UI变换产生影响,后面有时间继续写。