Unity ugui 矩形组件、锚点与重心点
发表于2018-10-12
这篇内容给大家整理了下对ugui矩形组件、锚点、重心点的理解,帮助那些对这个还不是很熟悉的朋友,其中每个矩形组件都有锚点和重心点。










1、锚点
对象拥有锚点,但是锚点的位置是对于父对象而言的,如下图,父对象是画布,子对象是图片。举两个栗子就能看清这两者的关系。


2、重心点
不同于锚点,重心点的位置是相对于对象本身而言的,举三个栗子。



3、RectTransform( 矩形组件 )的面板参数
1.当四个小雪花在一起,参数板面如下:
width, height:显而易见是矩形的长宽
Pos X , Pos Y:以锚点为原点,向右、上为正方向的坐标系里,重心点的位置?,举个两个栗子:


2.当四个小雪花不在一起,参数版面变化很大,有一个概念:锚框
锚框:四个小雪花不在一起,会组成一个锚框。
Top bottom left right = 矩形组件四边相对于锚框四边的距离
举一个栗子:

了解这些,就能知道拉伸父对象时子对象的变化情况了。
RectTransform版面的参数设置后是固定值,相当于长度不变的锁链,如果父对象四边位置变化,因为这些锁链长度不变,所以子对象的四边位置肯定会被锁链拉伸,就跟拉棉花糖一样,这就可以用来做图片自适应拉伸的效果。
4、RectTransform是如何绘制
猜测:RectTransform类的rect属性决定了RectTransform的绘制,以重心点为原点,向左和向下确定子对象矩形边的位置
测试代码
RectTransform brect = b.GetComponent < Transform >() as RectTransform; Debug.Log("绿图的RectTransform.rect.position:" +brect.rect.position.x+ "," +brect.rect.position.y);


5、RectTransform类里的几个属性
1. anchoredPosition属性
- 小雪花在一起时,以锚点为原点,求重心点的相对坐标
- 小雪花不在一起时,以右上角的小锚点为原点,求重心点的相对坐标
2. offsetMin属性
以左下角的小锚点为原点?求矩形组件左下角的相对坐标
3. offsetMax
属性以右上角的小锚点为原点?求矩形组件右上角的相对坐标
4. sizeDelta属性(尺寸变化量)
- 小雪花在一起时,就是矩形组件的长宽;
- 小雪花不在一起时,等于矩形长宽相对于锚框长宽的变化量:
- (矩形X轴长度-锚框X轴长度,矩形Y轴长度-锚框Y轴长度)
- 来自:https://www.jianshu.com/p/43d9187e6df8