UGUI基础篇 第(3)课: RectTransform组件常用小技巧与困惑知识点讲解

一. Debug调试模式以及RectTransform两种位置属性的关系

1.Debug调试模式介绍

Debug模式用于查阅隐藏在组件内部,不在编辑器公开显示的属性。如AchorsPosition ,LocalPosition这些处于
RectTransform的并不在编辑器显示的属性。

开启方式:如图所示,点击红色箭头的尾部 (哈哈,没想到把,在尾巴处,不在箭头指向处)

在这里插入图片描述

之后:选择Debug模式,就会显示RectTransform的属性面板,这样我们测试开发起来会更加方便。

在这里插入图片描述

2.RectTransform两种Position属性的讲解(Anchored Position与Local Position)

在Debug模式下,我们有许多RectTransform的隐藏属性参数可以查阅。
下面我主要讲解一下容易造成误解的两个属性参数:(Anchored Position与Local Position)
从本质区别上Local Position是Vector3类型,继承自Transform,Anchored Position是Vector2类型,继承自RectTransform
但是我们往往在使用时发现他们的X,Y的数值是一样的,(请看演示1)其实他们也会有不同的时候,我将用案例给大家讲解一下他们在UGUI
中使用的区别之处。

演示1:在一个UI的Pivot与锚点重合的情况下(蓝色圆环与4个锚钉围成的锚点位置相同,或者查看Anchor 的x,y的min,max是否是相同的,且都对应与Pivot x,y的数值),Anchored Position与Local Position的X,Y 数值相同。请看图 1-2-1;

                                                                                   图1-2-1

演示2:在一个UI的锚点不在父物体的几何rect(矩形区域)中心情况下(图1-2-2),或者说4个锚钉之间只要有分开的情况下(图1-2-3),两个值都不会相同。

在这里插入图片描述
在这里插入图片描述

                                                                     上面两图为1-2-2

在这里插入图片描述
在这里插入图片描述

                                                           上面两个图为1-2-3

演示3:此时我们拖动物体,我们发现物体的Pivot(枢轴点)与Anchors锚点的距离为(563,-74),利用其他UI物体测量,该UI距离父物体的
rect(矩形区域)的中心位置为(-110,-74),请观看 图1-2-4。
在这里插入图片描述
在这里插入图片描述

                                                                   上面两个图为1-2-4

	于是:我们得出结论:
	Anchored Position:      在UGUI使用中代表物体pivot相对于Anchors锚点图像(4个锚钉构成的区域)的几何中心点的位置。
	Local Position:         在UGUI使用中代表的是物体pivot相对于父物体的rect(矩形区域)的几何中心点的位置。

3.SizeDelta属性讲解

sizeDelta介绍:sizeDelta的值就是OffsetMax-OffsetMin的值
所以就会出现有时候sizeDelta得到的是UI元素的大小,有时候又不是的情况,下面就复现一下这两种情况

  1. 锚点情况下的sizeDelta
    在这里插入图片描述
    -----在锚点情况下,offsetMax和Min的起点相同,根据向量相减的三角形法则(不记得是不是这样说得了哈哈哈),可以得到一个新的向量,这个新的向量的X和Y的大小正好UI元素的宽和高相等,所以在这个时候去设置sizeDelta的值,可以直接调整UI元素的大小

  1. 锚框(4个锚钉有分开的情况下)情况下的sizeDelta
    在这里插入图片描述
    -----在锚框(4个锚钉有分开的情况下)的情况下,offstMax减去Min,得到的将不再是UI元素的大小,而是一个新的奇怪的向量,这个向量代表的物理意义是,sizeDelta.x值就是锚框的宽度与UI元素的宽度的差值,sizeDelta.y的值就是锚框的的高度与UI元素的高度的差值。

二. 利用定位快捷键AnchorPreset快速定位

介绍:定位快捷键AnchorPreset是Unity对于Anchors图形化面板进行直接定位的快捷方式

快捷键 Shift:在选中锚点定位位置时,同时设置Pivot。
快捷键Alt:在选中锚点定位位置时,同时设置UI position。

 同时:可以同时按下Shift与Alt,进行同时设置Anchors锚点,Pivot与Position。

在这里插入图片描述

三. 获取RectTranform宽高的最安全的方式

  1. 问题需求: 有些时候,我们使用Anchors锚点定位时,选择的为Stretch定位方式(解释为拉伸定位,或弹性定位),我们往往看不到当前UI的Width或Height,出现的为Left,Right,Top,Bottom面板 (请看下图 3-1) ,此时我们利用Debug调试模式查看SizeDelta发现也是不合理的(关于SizeDelta属性的讲解在上面).

在这里插入图片描述

                                                                           图3-1

2.解决办法:此时最安全的办法就是脚本获取当前Image物体的RectTransform.rect 结构体,获取结构体的属性值(width,height)

原理:请看下图 (3-2) 代码注释

在这里插入图片描述

    private RectTransform myRectTransform;
    void Start()
    {
        myRectTransform = gameObject.GetComponent<RectTransform>();


        //myRectTransform.rect     指当前UI物体的所拥有的矩形区域(结构体类型)
        //rect.width,rect.height  分别代表当前UI物体的矩形区域的宽高
        Debug.Log(myRectTransform.rect.width + " ----" + myRectTransform.rect.height);
    }

Console输出结果:下图(3-3)

在这里插入图片描述

                                                        图3-3

四. Blueprint mode 与 Raw edit mode介绍

前言 :我们最往往忽略也不经常使用的RectTransform的两个模式: Blueprint mode 与 Raw edit mode

两个模式开启关闭位置:如图 4-1

在这里插入图片描述

                                                      图4-1-1

之后我来向大家讲解两种模式的用处。。。。。。(好啦,看下面)


1. Blueprint mode作用

Blueprint mode作用:当我们对UI 进行缩放旋转时,我们的UI物体的Rect白框都会自动包含住我们的UI物体,请看图4-2到4-3的变化,
当我们开启Blueprint mode,我们的UI物体的Rect白框一直处于原始状态,不会随着UI物体的缩放旋转进行变化,请看图4-4到4-5。

  结论:Blueprint mode:用于控制UI物体的Rect是否进行与UI物体的缩放旋转自动包含适应。

在这里插入图片描述

                                                                       图4-1-2

在这里插入图片描述

                                                                          图4-1-3

当我们开启蓝图模式后:
在这里插入图片描述

                                                                           图4-1-4

在这里插入图片描述

                                                                           图4-1-5


2. Raw edit mode作用

Raw edit mode作用:作用于Anchors与Pivot, 开启进行改变Anchors锚点与Pivot的数值时,使UI物体的Position始终不会发生改变。

证明:不开启Raw edit mode时,默认状态(图4-2-1),我们改变Anchors锚点与Pivot的数值时,UI物体的Position值会进行变化(图4-2-2,图4-2-3)
当我们开启Raw edit mode时,改变Anchors锚点与Pivot的数值时,UI物体的Position值不会进行变化。(图4-2-4,图4-2-5)

 提示:图排版比较随意,可以直接拿(图4-2-2与图4-2-4  和图4-2-3与图4-2-5   进行对比观察),就能发现Raw edit mode的作用。

在这里插入图片描述

                                                                图4-2-1

在这里插入图片描述

                                                            图4-2-2

在这里插入图片描述

                                                          图4-2-3

在这里插入图片描述

                                                   图4-2-4

在这里插入图片描述

                                                    图4-2-5

结论: Raw edit mode开启时,改变Anchors与Pivot数值都不会改变Pos的值,Ui物体会去适应Anchors与Pivot数值,找到合适的位置使Pos保持原状不改变。

                                ------------我是有底线的--------------
                                感谢能够观看博客的各位Unity开发爱好者们,有问题发表评论呐,*★,°*:.☆( ̄▽ ̄)/$:*.°★* 。                                                      
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值