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的相对距离

  • 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吸附到锚点如下图

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Qualcomm QCA206x EasyMesh For Ubuntu

1. 引言 关于EasyMesh概念我们这里就不再过多的赘述,此篇文档的目的是,让广大初学者,有一个很方便的平台进行EasyMesh的学习和测试。 2. X86 Ubuntu平台 2.1 硬件环境准备 备注:QCA206x WiFi module推荐使用移远的FC64E/FC66E。…

代码随想录算法训练营第74天:路径总结[1]

代码随想录算法训练营第74天:路径总结 ‍ A * 算法精讲 (A star算法) 卡码网:126. 骑士的攻击(opens new window) 题目描述 在象棋中,马和象的移动规则分别是“马走日”和“象走田”。现给定骑士的起始坐标和目标…

细说MCU的ADC模块单通道连续采样的实现方法

目录 一、工程依赖的硬件及背景 二、设计目的 三、建立工程 1、配置GPIO 2、选择时钟源和Debug 3、配置ADC 4、配置系统时钟和ADC时钟 5、配置TIM3 6、配置串口 四、代码修改 1、重定义TIM3中断回调函数 2、启动ADC及重写其回调函数 3、定义用于存储转换结果的数…

【深度学习练习】心脏病预测

🍨 本文为🔗365天深度学习训练营 中的学习记录博客🍖 原作者:K同学啊 一、什么是RNN RNN与传统神经网络最大的区别在于,每次都会将前一次的输出结果,带到下一隐藏层中一起训练。如下图所示: …

macOS版ChatGPT更新:修复AI对话纯文本存储问题

猫头虎 🐯 建联猫头虎,商务合作,产品评测,产品推广,个人自媒体创作,超级个体,涨粉秘籍,一起探索编程世界的无限可能! macOS版ChatGPT更新:修复AI对话纯文本…

C++ 空间和时间高效的二项式系数(Space and time efficient Binomial Coefficient)

这里函数采用两个参数n和k,并返回二项式系数 C(n, k) 的值。 例子: 输入: n 4 和 k 2 输出: 6 解释: 4 C 2 等于 4!/(2!*2!) 6 输入: n 5 和 k 2 输出: 10 解释: 5 C …

maven项目、idea抽风问题解决

开发的时候遇到奇奇怪怪的非技术问题,解决起来会费时间,做无用功。   这里记录常见的情况和解决方法 1.未识别maven项目 文件的图标变成了这种橙色的,而且有主启动函数也不能run 右键pom文件,点击Add as Maven Project 如果…

揭开梵蒂冈秘密档案馆的神秘面纱

关注我们 - 数字罗塞塔计划 - PART 01 深邃的历史 梵蒂冈秘密档案馆起源于公元8世纪,负责保存官方文书和教皇书信。9世纪开始在圣彼得大教堂设立档案库,负责保管外交和法律文件,在帕拉蒂诺山塔内保存经济和行政方面的档案。11至13世纪&…

SpringBoot AOP面向切面编程 基础

介绍 在 Spring Boot 中&#xff0c;AOP&#xff08;面向切面编程&#xff09;是一种强大的技术&#xff0c;它允许你在应用程序中横切关注点&#xff0c;比如日志记录、事务管理、性能监控等&#xff0c;从而避免重复代码和混乱 可以记录操作日志 权限控制 。 依赖 <dep…

HTMLCSS(入门)

HTML <html> <head><title>第一个页面</title></head><body>键盘敲烂&#xff0c;工资过万</body> </html> <!DOCTYPE>文档类型声明&#xff0c;告诉浏览器使用哪种HTML版本显示网页 <!DOCTYPE html>当前页面采取…

go语言day08 泛型 自定义错误处理 go关键字:协程

泛型&#xff1a; 抛错误异常 实现error接口类型 用java语言解释的话&#xff0c;实现类需要重写error类型的抽象方法Error().这样就可以自定义异常处理。 回到go语言&#xff0c;在Error()方法中用*argError 这样一个指针类来充当error接口的实现类。 在f2()方法中定义返回值…

本地部署秘塔开源搜索引擎

秘塔AI搜索是由秘塔科技于2024年初推出的一款新型搜索引擎&#xff0c;被业界誉为“中国版的Perplexity”。秘塔科技成立于2018年4月&#xff0c;其核心团队包括CEO闵可锐、技术专家唐悦和首席运营官王益为等。秘塔AI搜索以其高效简洁的特点受到关注&#xff0c;其搜索结果直接…

累积分布函数的一些性质证明

性质1&#xff1a; E [ X ] ∫ 0 ∞ ( 1 − F ( x ) ) d x − ∫ − ∞ 0 F ( x ) d x ( 1 ) E[X]\int_0^{\infty}(1-F(x))dx - \int_{-\infty}^0F(x)dx\quad (1) E[X]∫0∞​(1−F(x))dx−∫−∞0​F(x)dx(1) 证明&#xff1a; E [ X ] ∫ − ∞ ∞ x p ( x ) d x E[X] …

ETCD 基本介绍与常见命令的使用

转载请标明出处&#xff1a;https://blog.csdn.net/donkor_/article/details/140171610 文章目录 一、基本介绍1.1 参考1.2 什么是ETCD1.3 ETCD的特点1.4 ETCD的主要功能1.5 ETCD的整体架构1.6 什么时候用ETCD&#xff0c;什么时候用redis 二、安装三、使用3.1 etcdctl3.2 常用…

审核平台前端新老仓库迁移

背景 审核平台接入50业务&#xff0c;提供在线审核及离线质检、新人培训等核心能力&#xff0c;同时提供数据报表、资源追踪、知识库等工具。随着平台的飞速发展&#xff0c;越来越多的新业务正在或即将接入审核平台&#xff0c;日均页面浏览量为百万级别。如今审核平台已是公司…

[Redis]哨兵机制

哨兵机制概念 在传统主从复制机制中&#xff0c;会存在一些问题&#xff1a; 1. 主节点发生故障时&#xff0c;进行主备切换的过程是复杂的&#xff0c;需要人工参与&#xff0c;导致故障恢复时间无法保障。 2. 主节点可以将读压力分散出去&#xff0c;但写压力/存储压力是无法…

直击园区消防管理现状,智慧消防相比传统消防管理的优势是什么

一、工业园区消防管理现状 1、消防信息智能化程度低 信息化手段落后&#xff0c;现场的数据信息无法即时传送至指挥中心&#xff0c;突发事件发生时&#xff0c;无法扁平化指挥到基层现场&#xff0c;应急处置能力不足。 2、防控体系不健全 存在监测盲点&#xff0c;火灾报警…

Mybatis实现RBAC权限模型查询

RBAC权限模型 Role-Based Access Control&#xff0c;中文意思是&#xff1a;基于角色&#xff08;Role&#xff09;的访问控制。这是一种广泛应用于计算机系统和网络安全领域的访问控制模型。 简单来说&#xff0c;就是通过将权限分配给➡角色&#xff0c;再将角色分配给➡用…

ABB机器人坐标系偏移指令

ABB机器人在坐标系中偏移用到的指令有&#xff1a;Offs和RelTool。Offs用在工件坐标系中偏移&#xff0c;而RelTool是在工具坐标系中偏移。 一、Offs用于在一个机械臂位置的工件坐标系中添加一个偏移量。 Offs (Point &#xff0c;XOffset&#xff0c; YOffset &#xff0c;Z…

【UE5.1】Chaos物理系统基础——05 蓝图绑定Chaos破裂或碰撞事件

步骤 1. 新建一个父类为Actor的蓝图&#xff0c;这里命名为“BP_ChaosExplosionEvent” 打开“BP_ChaosExplosionEvent”&#xff0c;添加一个变量&#xff0c;这里命名为“GC”&#xff0c;变量类型为“几何体集actor”&#xff0c;设置为可编辑实例 在事件图表中添加如下节点…