RectTranform感悟①(好玩而且好用)
开篇先贴学习的链接,谢谢这位大神总结的经验,让我受益匪浅:https://www.jianshu.com/p/4592bf809c8b
如这位大神所说,一开始直接接触案例的本人遇到RectTranform面板是很头疼的,这一大堆都是啥,直接回避之,效果达成就可以了。但其实,这里面的各种参数数据,都对整体2D或者说UI层面都有很大影响,对于有UI改变需求的更是需要学习这方面的知识。
1.绝对布局与相对布局
先来个笼统的概念,就是if(AnchorMax != AnchorMin)则这个obj为相对布局,反之为绝对布局。而这两个东西,其实就是锚点的最左下方点坐标,和最右上方点坐标,在(0–1)之间浮动。
第一次看到这东西是一脸懵逼,觉得不知道在说些什么。。
但如果回到项目工程里,其实很简单就能知道它的原理。
单纯看面板,就可以知道AnchorMax和AnchorMin这两兄弟相等,也就是绝对布局,无论这个Father怎么变换,这Son该多大,就多大。本人又喜欢称为“我是儿子我最屌布局”。
这里是隔开标记
另一种情况,我们考虑AnchorMax刚好是(1,1),AnchorMin刚好是(0,0),反正两者不相等,则这个布局为相对布局,面板变成了左上右下四格参数。这四个参数就吊了,表示上下左右到锚点构成的框框的相对距离,而且不可自己变。在我们的变态操作下,就会出现如下画面:
出现了!“我是儿子我最乖”!
如果left+right>Father.width或者top+buttom>Father.height,就会翻肚。
2.Pivot
其实就是中间那个小蓝圈,表示这个物体缩放旋转的中心点。
在绝对布局中,面板里的PosX与PosY,就是pivot到锚点的横向距离与纵向距离。U3D甚至还给了提示。
3.Offset与DeltaSize
在RectTransform组件中,可读可写Offset>>>offsetMin与offsetMax,offsetMin就是最左下方的点-AnchorMin(其实就是AnchorMin指向最左下方点的向量),offsetMax则为AnchorMax指向最右上方点的向量。
DeltaSize=offsetMax-offsetMin;
而在绝对布局情况下,就会非常快的获得斜对角方向一个向量,控制该向量,直接就可以控制该obj的尺寸。
而在相对布局情况下,就会获得两个差值:sizeDelta.x值就是锚框的宽度与UI元素的宽度的差值,sizeDelta.y的值就是锚框的的高度与UI元素的高度的差值。
所以这个属性之所以叫做sizeDelta,是因为在锚点情况下其表征的是size(大小),在锚框的情况下其表征的是Delta(差值)————这句话来自原作者。
4.Rect
终于轮到这个烦恼了一个下午的属性了。
其实也非常简单,第一个参数为pivot在自身UI里的x坐标,第二个参数为pivot在自身UI里的y坐标,
需要注意的是,这两个坐标在自身UI里坐标定位时,最右下角为(0,0),最左上角为(-width,-height)
第三个参数就是width,第四个就是height。
看上去很全面,但是很可惜,貌似只可读,所以无法起到修改尺寸的目的。
public Transform trans;
private void Start()
{
Debug.Log(trans.GetComponent<RectTransform>().rect);
}