unity知识点 专项四 一文彻底说清楚(锚点(anchor)、中心点(pivot)、位置(position)之间的关系)

一 概述

想要使UI控件在屏幕中达到正确的显示效果,比如自适应屏幕尺寸、固定边距等等,首先要理清楚几个基本概念和设置:锚点(anchor)、中心点(pivot)、位置(position)、UI缩放模式、父物件的transform设置

二   Anchor、Pivot与Position

2.1  Anchor (结论anchor以父物件为坐标参考系)

  • anchor可以理解为是该控件所在的平面坐标系原点,在屏幕缩放或者形变的过程中,控件本身自始至终都是参照其anchor的位置进行相对移动。就像是船与船锚的关系。
  • anchor可以设置一个坐标(x, y),这个坐标的参考系是该控件所属的父层级,比如,如果直接在Canvas层级底下摆放控件,那么整个屏幕就是其父层级。不论这个父层级的比例高矮、像素多大,它的坐标范围都会被钳制在0-1之间,如果希望子物件的锚点位于父物件的正中间,那么子物件的锚点坐标需要设置为(0.5, 0.5)。

2.2 Pivot(结论pivot 以自身为坐标参考系)

  • pivot虽然被翻译为中心点,但容易造成误解,因为pivot并不一定在物体中心,甚至可以超出物件的范围。可以理解为轴点(绕该点旋转),或者是吸附点(用该点去吸附目标位置)
  • pivot也具有一个坐标 (x, y),这个坐标的参考系是控件本身(子层级),原点位于控件的最左下角,(1, 1)点位于最右上角

2.3 Position(结论 position是pivot与anchor的相对距离

这里和anchoredPosition的位置计算方法类似

  • position提供的信息是pivot与anchor的相对距离,例如坐标 (50,125)就代表:该控件的pivot位于自身anchor的x轴正方向50像素,y轴正方向125像素处。不论屏幕的比例、像素如何变化,pivot与anchor将始终保持(50, 125)的向量值
  • 通过图示可以清楚的看到,anchor以父物件为坐标参考系,pivot 以自身为坐标参考系,position代表二者的距离

三 显示窗口与属性面板

通过图2可以看到:

  1. 不论锚点、中心点位于何处,控件的显示位置依然在最中央
  2. anchor只能手动拖动到父物件的边界,它的活动范围取决于父物件的大小(如果直接设置坐标,可以超出这个范围)
  3. pivot的位置不受限制,所以前面提到,“中心点”的翻译并不贴切

                                                  图二

但是令人尴尬的事情发生了,当屏幕的比例发生变化时,控件并没有跟随屏幕自适应(图3)。不过可以注意到:

  1. 锚点依然位于父层级的左下角,锚点与父物件的相对位置没有发生改变
  2. pivot与锚点的相对位置没有发生改变
  3. 控件与pivot的相对位置没有发生改变

通过梳理他们三者的关系,可以尝试这样一种思路:1.设置锚点坐标(0.5, 0.5),使其处于父物件的中心,不论屏幕如何变化,锚点都在中心位置。2.设置pivot坐标为(0.5, 0.5),使其处于子物件中心。3.设置PosX=0, PosY=0,使锚点到pivot的向量值归零,吸附到一起。问题解决

点开Transform中的面板(图4),这里可以快速设置锚点的位置,另外两个必须要注意的按键是 shift 和 alt,可以有效提高我们的效率:shift+点击 可以同时设置锚点与pivot;alt+点击 可以同时设置锚点与position;两个键同时按下则可以快速设置三个属性

                                                                 图四

shift+alt+点击,所有属性会快速定位到对应的位置(图5)。如果我们的目标位置在某一个空白处,则可以手动拖拽anchor,然后将PosX,PosY设置为(0, 0),消除pivot与anchor的相对距离,控件便会自动吸附到锚点处。由于pivot默认在控件的中心位置(0.5, 0.5),所以不需要额外设置。

                                                               图五

四 注意点 check points

4.1 UI缩放模式

找到 Canvas-UI Scale Mode,下拉菜单中有三种选项,分别是:constant pixel size/ scale with screen size/ constant phsical size。也就是保持像素/跟随缩放/保持物理距离,该缩放模式与transform设置可以形成多种排列组合结果,所以就不举例了。如果效果不正确,记得检查该处设置即可

4.2 父物件的transform设置

通常不会将所有的UI控件都放在Canvas层级下,而是会有类似 Canvas-grandpa-father-son 的层级管理,所以应当注意之中的 grandpa、father的尺寸(宽度width*高度height),如果最底下的son控件需要根据整个屏幕自适应,那么须确保grandpa与father已填充了屏幕尺寸。(如图4所示,可以通过alt+点击最右下角,填充整个屏幕)

五 思考

5.1 题目描述

现在需要在屏幕右下角放置一个button,有两种设计模式,一种是永远保持与屏幕边框20像素;另一种是永远在屏幕右下角1/10距离处,应该如何实现?

5.2 分析方案

对于第一种模式,我们需要将pivot移动到控件的右下角(1, 0),将anchor移动到屏幕的右下角(1,0),然后将position(相对距离)设置为 PosX=-20, PosY=20, 使pivot位于锚点x轴负方向20像素,y轴正方向20像素处见下图

对于第二种模式,pivot设置为(1,0),锚点设置为(0.9,0.1),PosX=0, PosY=0,将pivot吸附到锚点如下图

六 localPosition与anchoredPosition(3D)的区别 见下面链接

unity知识点 专项一 localPosition与anchoredPosition(3D)的区别-CSDN博客

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/1475216.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

【Unity】UGUI的基本介绍

Unity的UGUI(Unity User Interface)是Unity引擎内自带的UI系统,官方称之为UnityUI,是目前Unity商业游戏开发中使用最广泛的UI系统开发解决方案。以下是关于Unity的UGUI的详细介绍: 一、UGUI的特点 灵活性&#xff1a…

**kwargs 字典解包传参的方式

字典解包传参 在Python中,****kwargs**是一种通过字典解包 (dictionary unpacking) 的方式进行参数传递的方式。它将一个字典的键值对解包并传递给函数的命名参数。 示例代码 kwargs实参: {name: "jordan", age: 18, score: [80, 85, 85]} get_info形…

【收藏】欧盟CE、美国FDA法规及标准查询常用网站

01 CE法规&标准查询网站 医疗器械主管部门的网站 网址: https://www.camd-europe.eu/ 简介: CAMD的全称是Competent authorities for medical devices,翻译成中文叫做医疗器械监管机构,实际上它指的是欧盟成员国医疗器械监管机构的联盟&#xff…

NAT:地址转换技术

为什么会引入NAT? NAT(网络地址转换)的引入主要是为了解决两个问题 IPv4地址短缺:互联网快速发展,可用的公网IP地址越来越少。网络安全:需要一种方法来保护内部网络不被直接暴露在互联网上。 IPv4 &…

王老师 linux c++ 通信架构 笔记(一)linux虚拟机的安装

(0)本门课程会涉及很多知识。在此集中记录,做笔记,也可能加入别的专栏。 (1) vmware 15 的下载和密钥上网查找。 ubuntu - 16 - 04 的版本才 800 M ,来 csdn 找镜像 下载。 (2&#…

23款奔驰S400升级原厂后排电动座椅调节有哪些功能

奔驰 S400 商务版升级后排电动座椅后,通常会具备以下功能: • 电动调节功能:可以通过按钮或控制面板来调节座椅的前后、上下、倾斜等位置,以获得最佳的舒适度。 • 座椅加热功能:在寒冷的天气中,座椅加热…

计算机网络之令牌环

1.令牌环工作原理 令牌环(Token Ring)是一种局域网(LAN)的通信协议,最初由IBM在1984年开发并标准化为IEEE 802.5标准。在令牌环网络中,所有的计算机或工作站被连接成一个逻辑或物理的环形拓扑结构。网络中…

jvisualvm工具使用--添加远程监视

jvisualvm简介 jvisualvm该工具位于jdk的bin目录下,是jdk自带的可用于监控线程、内存情况、查看方法的CPU时间和内存中的对 象、已被GC的对象、反向查看分配的堆栈等,即:Java虚拟机监控、故障排查及性能分析工具。 远程监控方法 以windows端…

直面生产制造的8大核心痛点

1.制造部门的计划紊乱问题 1.1计划的重要性与常见缺陷 计划是制造部门高效运作的前提。在实际运作中,计划的缺失或不周会导致生产效率的大幅降低。常见缺陷包括: -缺乏综合的生产计划,过分依赖销售计划,忽视生产和采购的实际能…

一文学会 BootStrap

文章目录 认识BootStrap历史优缺点使用注意安装CDN源码引入包管理器 媒体查询屏幕尺寸的分割点(Breakpoints)响应式容器网格系统基本使用底层实现.container.row.col、.col-份数 网格嵌套自动布局列 Auto-layout响应式类 Responsive Class 响应式工具类-…

WAIC2024 上海 | Gooxi 全面展示智算新成果,加速人工智能落地应用

浦江之畔,大咖云集;智能浪潮,奔涌不息。7月4日,被誉为人工智能界风向标的世界人工智能大会暨人工智能全球治理高级别会议在上海盛大召开,Gooxi此次携最新AI服务器以及解决方案参与,以算为擎赋能新质生产力&…

花朵短视频:四川江兴川丰科技有限公司

花朵短视频:绽放于屏幕间的自然诗篇 在快节奏的现代生活中,我们常常渴望一抹清新与宁静,以慰藉心灵的疲惫。而花朵短视频,就像是大自然精心编织的一首首无声诗篇,四川江兴川丰科技有限公司通过手机屏幕的方寸之间&…

vue3+ts 重复参数提取成方法多处调用以及字段无值时不传字段给后端

参数提取前的写法,此写法值为空的时候也会传空字段给后端 会把无值的空字段传给后端 修改后的写法,不会把没有值的字段传给后端 // 列表和导出需要传给后端的公共参数(加 || undefined即可过滤空字段) const getCurentParam () …

举例说明深拷贝和浅拷贝

概述 简单描述一下对象的实例化过程。 创建对象的时候,或者说在实例化对象的时候 Person 类有年龄和学生类 int age 18; Student stu1 new Student(); 比如此时创建一个 age 对象,一个Student 对象,在虚拟机中,会在堆中开一…

基于mmap的读写工具封装案例

文章目录 注意事项C封装示例添加构造函数重载以支持追加模式支持文件大小动态变化异常安全性和资源泄漏预防提供更高级的数据访问接口示例代码改进 在很多高性能应用中,直接使用内存映射文件(mmap)进行文件的读写操作可以显著提高效率&#x…

工业4.0视角下:PLC转OPC UA网关的作用

在工业自动化领域,PLC(可编程逻辑控制器)是常见的控制设备,而OPC UA(开放型工业自动化统一架构)协议则是一种现代化的通信协议,用在工厂自动化系统中实现设备之间的数据交换和通信。PLC转OPC U…

极品AI大模型,抓紧收藏!整合包!

近期,科技巨头谷歌终于发布了1个月前在I/O开发者大会上预告过的Gemma 2大模型。据谷歌介绍,与第1代Gemma模型相比,新模型拥有更优的性能,推理效率也更高。我当然是,“无所谓,我会出手.jpg”,给大…

主数据深度剖析与实际应用

主数据深度剖析与实际应用 想象一下,你正在经营一家跨国连锁咖啡店。每天,全球数千家门店都在使用你的品牌,制作相同的饮品,为客户提供服务。但是,你突然发现一个问题:纽约的"拿铁"和东京的"拿铁"配方似乎不太一样。更糟糕的是,你的线上菜单和实体店菜单显…

最简单的浏览器插件启用github双因素身份验证 (2FA)方法

在github贡献一定的代码量后,github会要求启用双因素身份验证,否则登录会受到影响。一般有短信验证,app扫码验证,这里推荐一种最简单的方式,用浏览器插件验证。 首先,在edge浏览器的微软插件商店&#xff0…

人工智能赋能智慧园区,构建未来城市的科技典范

智慧工地视频监控平台是一款功能强大且简单易用的实时算法视频监控系统。它的愿景是最底层打通各大芯片厂商相互间的壁垒,省去繁琐重复的适配流程,实现芯片、算法、应用的全流程组合,从而大大减少企业级应用约95%的开发成本。用户只需在界面上…