Unity之UI的RectTransform

Unity中UI不使用世界坐标系下的Transform组件,而是Canvas下的RectTransform。

在开发中遇到了需要代码控制坐标的情况,用到了RectTransform有关的API。 

RectTransform.anchoredPosition

  1. Canvas锚点到自身锚点(pivot)的偏移量,类型Vector2,和Inspector面板中的PosX PosY值一样。我更愿称之为偏移而不是坐标,理由见第三点。
  2. 该坐标是相对于Canvas锚点的位置的,在Unity中有9个默认锚点,如下图 ,也可以自定义。因此选择不同的锚点,即使同一偏移,UI的位置也会不同。 
  3. UI的坐标是UI的Pivot的坐标,在Inspector面板上对应Pivot。如果Pivot放的位置不同,即使选相同Canvas锚点和相同偏移量,UI的位置也会不同。

 RectTransform.rect

  1. 矩阵信息,只读的,包括坐标,宽高
  2. 宽高和Inspector面板的宽高一样
  3. 坐标是相对于自身锚点的坐标,自身锚点即Inspector面板中的Pivot,这是一个相对于宽高归一化的值,为了研究这个我输出了rect的值

可见,对于pivot为(0.5,0.5)时,rect的x,y为width和height的一半 ,并且是负的,说明xy代表的是矩形的左下角。于是pivot为(0,0.5)时,rect的x就是0了。(事后我测了pivot为(1,1)时,xy正好是负的宽高)

 

 

 

 

 

 


版权声明:本文为qq_39810051原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。