问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

Unity UGUI系列四 Pivot Anchor

发布网友 发布时间:2022-12-01 04:51

我来回答

1个回答

热心网友 时间:2023-11-06 07:53

参考
Unity进阶技巧 - RectTransform详解
Unity——RectTransform详解
屏幕适配实用技巧
揭秘!anchoredPosition的几何意义!
localPosition与anchoredPosition转化之瞎猫找死耗子

首先为了让大家更好的理解内容,我在Unity中创建了两个UI控件,一个Plane控件,作为父对象,一个Image控件,最为子对象,如下图:

Pivot我们可以暂且称它为中心轴(这个翻译不太准确,但为了便于理解,先这么叫着),它是一个X,Y值范围是0到1的点,这个点的会在Anchor(锚点)计算位置的时候会使用到,下面用一张图来解释Pivot点的位置

旋转、大小和缩放修改发生在主轴Pivot点周围,因此Pivot的位置会影响旋转、调整大小或缩放的结果。

关于Anchor锚点可能接触过UI的朋友都了解一些,但是Unity中Anchor应该称它为锚框更为合理,因为它是由两个锚点(Min,Max)组成的一个矩形,当然也可以组成一个点(两个点重合)

当然上图是两个锚点重合的情况,所以看上去是一个点,下面我们利用两个锚点不重合的情况来说明一下:

在了解了Pivot和Anchor分别是什么后,我们就来看看Unity是如何使用这个两个东西来控制UI的布局

我们先来看看两个锚点重合时的情况,这种情况是我们最常用也是最容易理解的方式

总结下第1种情况的特点就是:子物体的大小不会随着父物体的大小变化而变化,但是位置会根据Pivot点到Anchor点的距离一致的原则发生对应的变化

当两个锚点(AnchorMin和AnchorMax)不重合时,两点就会确定一个矩形,这个矩形就是我们的锚框,如下图中的绿框就是我们的锚框区域

同理,如上图所示,Unity以锚框的右上角为原点(0,0),然后红框的Right和Top两个数确定红框的右上角的在坐标系中的位置,原地和红框的右上角的点确定一段距离(即上图的绿色箭头),不管黑框如何边框,这段距离都保持不变

在黑框大小和位置变化的时候,Unity会保证红框的左下角到锚框的左下角距离不变,同时红框的右上角到锚框的右上角距离不变,来确定红框的相对位置和大小,看下图来感受一下变化:

注意上图中红框左下角到黑框左下角的距离,以及红框右上角到黑框右上角的距离,他们都是不变的

快速设置Anchor,加快捷键能同时设置pivot或position

unity中的ui元素是有严格的父子关系的,子物体的位置是根据父物体的变化而变化的,而子物体和父物体联系的桥梁就是Anchor。之所以anchorMax和anchorMin的值是小数,是因为其表征的是该点所在位置占父物体大小的比例。

所谓的绝对布局,就是出现锚点的情况,此时的recttransform面板中的属性变成PosX,PosY,PosZ,Width,Height,这五个属性,首先说说Width和Height,在绝对布局的情况下无论分辨率是多少,父物体多大,该UI元素的大小是恒定的,如下图所示

所谓相对布局,就是出现锚框的情况。在这种情况下UI元素的四个角,距离四个对应的锚点的距离是不变的,在这种情况下RectTransform的属性又变为了Left,Top,Right,Bottom,PosZ,其中的PosZ表征的是该元素到父物体在Z轴上的偏移,利用这个值可以调整UI元素的显示顺序,不过我用的不多,这里不作太多讨论。剩下的四个值应该很好理解了,就是UI元素的每一条边距离父物体的每一条边的距离。

anchoredPosition根据名字的含义,我们大概可以猜出他是根据anchor锚点得出来个一个位置属性,他本身是一个点,如果在AnchorMin和AnchorMax是重合的情况下,anchoredPosition就是表示锚点到Pivot的位置,如下图所示:

但是如果AnchorMin和AnchorMax不重合的时候,anchoredPosition就比较复杂了,在这种情况下,Unity会根据Pivot、AnchorMin和AnchorMax计算出一个锚点,然后在通过Pivot和锚点来得出anchoredPosition的位置

offsetMin和offsetMax这两个属性比较好理解,其中offsetMin表示物体(本文中的红框)左下角相对AnchorMin的偏移,offsetMax表示物体右上角相对AnchorMax的偏移

sizeDelta就是offsetMax - offsetMin的值,即物体左下角到右上角的变量,如下图所示:
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
邯郸自驾游到青岛马壕运河遗址推荐线路 株洲自驾到青岛马壕运河遗址途径地方 梧州回青岛马壕运河遗址要几个小时 石嘴山到青岛马壕运河遗址要多少油钱 可不可以用开水敷脸 开水能不能敷脸 发动机和发电机区别?? 电音之王朴智妍MV的图片? 电音之王mv里跳舞的是谁 自己怎样开网站 怎样把一个网页设置为主页 unity 自动排版(Horizontal Layout Group) unity 自动排版(Vertical Layout Group) unity 自动排版(Layout Element) 股票高手亚通股份还能涨上去吗 南宁有多少台网约车 中石化经纬有限公司和中石化胜利油建哪个好 ()语言是计算机唯一能够识别并直接执行的语言 惠普479dw硒鼓芯片可以用多久 太阳为落下的时候为什么会出来月亮 当太阳落下了,月亮会出来吗? 为什么太阳落下后,月亮又升起来了? 为什么太阳落下月亮升起? 求助:关于用eclipse编写一个简易计算器 Java中计算器的程序 《工业互联网思维与大数据应用》 多少年重复一次农历5月初五逢星期五 咸鸭蛋没煮熟能吃吗?咸鸭蛋没腌透可以吃吗 徕卡相机在哪里看型号 一级主任科员晋升四调需要公示吗? 晋升一级主任科员需要公示吗 unity怎么右前视图调整到透视图 红米6pro可以用感应充电器吗? 寿司要用什么米寿司要用什么米做 用360 C盘搬家,系统重装后以前安装软件还能用吗 红米k40手机cpu坏了修一下多少钱 我的红米手机cpu烧了修多少钱? 手机怎么分行货、水货? Win7 x64怎么就是装不上chrome 枇杷怎么吃治咳嗽最好 枇杷对嗓子好吗 请问弹弹堂手游飞天幼龙怎么样 无线传输电子吊秤做法?? 电子吊秤的介绍 如何在多国语言环境中育儿 oppo应用桌面快捷方式 贷款管理暂行办法》中规定,贷款人不得有哪些行为 非银金融是哪些行业 什么叫非银金融? 描写一下当前安静的情景。 集装箱租赁的方式 作文美丽的梅川水库600字