Transform与RectTransform组件解析

发表于2016-12-26
评论0 4.8k浏览
游戏对象不管是3D还是UI,都有一个最基本的组件:Transform(针对非UI)、RectTransform(针对UI)。如下图所示:
 一定程度上可以说,RectTransform是由Transform组件衍变来的,是针对UI这个特殊的游戏对象的特殊要求而设计的,RectTransform组件继承了Transform的大部分属性。
下面我们针对这两个变换组件分别进行解析:

1、Transform
该变换组件能够变化游戏物体3方面的属性:
Position(位置):调整游戏物体在场景中的位置;
Rotation(朝向):调整游戏物体在场景中的朝向;注意:X=45,是指绕游戏物体的X轴旋转45度角,其他轴,依次类推;
Scale(缩放):调整游戏物体在场景中的大小;例如:X=1.5,说明让游戏物体在X轴方向上放大到1.5倍;
特别提醒:一个Transform组件的变换是有“参考系”的,如果该Transform有父级,则该Transform的Position、Rotation、Scale的变换,是相对于父级的;反之,如果没有父级,则默认为世界坐标系。
另外,关于Transform组件在脚本代码中如何使用,笔者会在另外一篇文章中进行详细地介绍,这里忽略。

2、RectTransform
Anchors(锚点):锚点的作用主要是为了确定子对象与父对象之间的相对位置关系。这里总共有4个锚点,相邻的2个锚点似乎决定了一条供子级对象特定的某一边偏移参考的“锚边”。因此,这里总共有4条“锚边”,如图所示:Left参考锚边、Right参考锚边、Top参考锚边、Bottom参考锚边。这些锚边,可以通过改变Anchors项:Min_X(针对Left参考锚边)、Max_X(针对Right参考锚边)、Min_Y(针对Bottom参考锚边)、Max_Y(针对Top参考锚边)的值,来移动这些锚边。值得注意的是,它们的取值范围都是0至1之间。例如,Min_X=0时,表示Left参考锚边移动到父对象的左边框上,Min_X=1时,表示Left参考锚边移动到父对象的有边框上。由此可以看出,父对象的边框才是这些参考锚边的边界限。
参考锚边:特定的锚边是供子对象的特定边框偏移的参考系。如图所示,Bottom的值-30.99999是子对象的Bottom边相对于Bottom参考锚边的“偏移量”。以此类推,其他子对象的3条边也是分别参考它们各自对应的参考锚边而设置的偏移量。
  
结论:我们在布局有层级关系的UI对象时,需要很好地设置运用这些锚点以及相关属性的值。
  
Position(位置):有4种情况如下图所示
情况1

情况2

情况3

情况4
综上所述,UI的位置是指“圆圈”相对于“锚点边”的“位置”。“圆圈”即Pivot下面会讲,“锚点边”上面已经讲解。另外,Pos Z的值,一般默认为0,一般情况下改变它也没什么意义。
 
Pivot(旋转枢纽)与Rotation(旋转轴)
例1

例2
从上可以大概看出,Pivot与Rotation这两个属性之间的关系。Pivot是Rotation的“枢纽点”,Rotation的旋转是围绕该“枢纽点”的X、Y、Z轴的旋转。另外,Pivot的属性值是相对于Image对象自身的Recttangle计算的值,很难表述,因此读者可以拖动Pivot点测试一下,就会明白它的意义,这里就不做表述啦。

 
如上图红圈标注,UGUI其实给我们“预设”了,N种常用的布局模式,它们基本可以满足我们的需求。只要点击选择即可,接着进行微调属性面板值,基本可以达到目标。置于这N种模式的具体含义,读者试试就可以明白,这里就不赘述啦!
  
希望这篇文章对读者了解RectTransform与Transform变换组件有一定的帮助。如有不足之处,请指正。

如社区发表内容存在侵权行为,您可以点击这里查看侵权投诉指引

0个评论