概念:
(框):指的是显示内容包围盒的矩形,就是由4个蓝色圆形角点构成的矩形。
(轴心点):旋转围绕的中心或坐标原点,就是pivot。
(角标):编辑器中调整anchorMin,anchorMax的4个三角形。
=========================================
anchoredPosition,anchoredPosition3D:(轴心点)-4个(角标)的中心,像素为单位。
anchorMin,anchorMax:分别指4个(角标)的标准化坐标,也称锚点。取值范围:[0,1]
offsetMin:(框)的左下角-anchorMin,像素为单位。
offsetMax:(框)的右上角-anchorMax,像素为单位。
pivot:(轴心点)的标准化坐标。取值范围:[0,1]
rect:本地空间的矩形。xy是以(轴心点)为原点到(框)的左下角的偏移量,width与height指(框)的大小,像素为单位。
sizeDelta:(框)的大小-4个(角标)所构成的矩形大小,像素为单位。
localPosition:
Canvas RenderMode Overlay 以父级(轴心点)为原点到当前(轴心点)的像素坐标
Canvas RenderMode Camera 以父级(轴心点)为原点到当前(轴心点)的像素坐标
position:
Canvas RenderMode Overlay 以Canvas的左下角为原点到(轴心点)的像素坐标
Canvas RenderMode Camera 以Camera的中心为原点到当前(轴心点)的世界单位坐标
SetInsetAndSizeFromParentEdge(RectTransform.Edge edge, float inset, float size);
调整RectTransform的大小
edge:将设置角标到一条边上
inset:距离edge的长
size:要调整的大小
该方法可以重复调用多次产生不同效果
注意:
1.RectTransform中的除了localPosition和position外,其它属性并不会跟随屏幕大小发生变化,
使用其他属性时需要根据canvas.localScale进行计算才能得到实际的大小值。
2.Canvas下的所有RectTransform的localScale和lossyScale属性,在适应不同大小屏幕时是不会改变的,会变的只有canvas.localScale,canvas.lossyScale也不会变。
更多说明
http://www.manew.com/thread-95753-1-1.html
应用示例:
//Canvas RenderMode Overlay
/// <summary>
/// 返回指定RectTransform屏幕坐标矩形
/// </summary>
/// <param name="rectTransform">指定的RectTransform</param>
/// <param name="canvasLocalScale">Canvas的缩放量</param>
/// <returns></returns>
public static Rect getScreenRect(RectTransform rectTransform,Vector3 canvasLocalScale){
Rect rect=rectTransform.rect;
//根据Canvas缩放
rect.width*=canvasLocalScale.x;
rect.height*=canvasLocalScale.y;
rect.position*=canvasLocalScale;
//计算矩形左下角
Vector2 leftBottom=(Vector2)rectTransform.position+rect.position;
rect.position=leftBottom;
return rect;
}