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

news2025/4/21 7:59:29

一 概述

想要使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.coloradmin.cn/o/1917497.html

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

相关文章

java:运用字节缓冲输入流将文件中的数据写到集合中

代码主要是将文本文件中的数据写到集合中,运用到的是java字节缓冲输入流的知识点。 public static void main(String[] args) throws IOException {//创建字符缓冲流输入对象BufferedReader bufferedReader new BufferedReader(new FileReader("student.txt&q…

Linux 忘记root密码,通过单用户模式修改

银河麒麟桌面操作系统 V10(sp1)”忘记用户密码,需要修改用户密码所写,可用于 X86 架构和 arm 架构。 2. 选择第一项,在上图界面按“e”键进行编辑修改。 3. 在以 linux 开头这行的行末,添加“init/bin/bas…

机遇与挑战并存 券商国际化战略布局关键要素

引言 在全球金融市场不断开放和技术快速进步的背景下,越来越多中资背景的券商开始寻求国际化发展。富途和老虎证券作为先行者,展示了中国券商在出海过程中的巨大潜力和成功经验。鉴于中资在海外设立券商的成功,不少公司也有意愿在海外设立券…

顺序结构 ( 六 ) —— 顺序结构实例 【互三互三】

🚀欢迎互三👉:程序猿方梓燚 💎💎🚀所属专栏:C教程💎 🚀关注博主,后期持续更新系列文章 🚀如果有错误感谢请大家批评指出,及时修改 &am…

51单片机:如何使用串口波特率计算器及其详解

目录 一、如何使用串口波特率计算器 1.以此为例: 2.生成代码如下: 3.需要手动配置中断系统 1.原理图 2.配置代码 二、如何理解软件生成的波特率 1.以该代码为例子进行分析 2.串口模式图 三、如何计算波特率 参考STC89C52手册P235 四、如何调用串口中断函数 一、如何…

数据分析理论

数据分析的概念 数据分析是指通过恰当的统计方法和分析手段,对数据进行收集汇总,并进行加工处理。对处理过后的有效数据进行分析,发现存在的问题,制定可行的方案、从而帮助人们采取更科学的行动 数据分析4个层次 著名咨询公司Gart…

55070-001J 同轴连接器

型号简介 55070-001J是Southwest Microwave的连接器。这款连接器外壳和中心接触件采用 BeCu 合金制成,这是一种具有良好导电性和机械性能的铜合金。绝缘珠则使用了 PEEK HT 材料制成,这是一种耐高温、耐化学腐蚀的工程塑料。为了确保连接的可靠性和稳定性…

腾讯HR的多维世界:从校招到文化塑造的全面探索

目录 Lyra:海外招聘的沟通桥梁 Moth:文化与活动的创意推手 Yaron:数据与分析的驱动者 腾讯HR的多元价值与成长路径 成就他人,实现自我 多元化团队的协同效应 长期主义与持续成长 企业文化与社会责任的践行者 结语&#x…

项目管理工具评测:2024年国内外最顶级的10款项目管理工具排行

国内外涌现出众多优秀的项目管理工具,它们各自在功能、易用性、集成能力等方面展现出独特优势。以下是国内外顶级的10款项目管理工具: 一、进度猫 推荐理由:进度猫以其直观的任务管理和进度跟踪功能,成为许多团队和项目的首选…

前一段时间比较火的刷网课平台源码,带数据库和教程

前一段时间比较火的刷网课平台源码,带数据库和教程。 好在疫情已经结束了,希望今后世上再无网课。 这个代码免费提供给大家学习开发用吧,作为一个php的入门学习案例用用还可以。 使用办法 网站根目录解压 打开nginx.htaccess文件&#x…

LeetCode—和为K的子数组(前缀和)

题目描述 给你一个整数数组 nums 和一个整数 k ,请你统计并返回 该数组中和为 k 的子数组的个数 。 子数组是数组中元素的连续非空序列。 示例 1: 输入:nums [1,1,1], k 2 输出:2示例 2: 输入:nums …

api授权电商平台对接商品详情页数据指南

API授权电商平台对接商品详情页数据指南主要分析如何通过API接口获取电商平台上商品的详细信息,并指导如何将这些信息集成到应用程序中。接下来将详细探讨这个过程中的关键步骤和技术细节: API接口概述 功能和重要性:API(应用程序…

【计算机网络】深入理解TCP协议的三次握手和四次挥手 一、前言

文章目录 前言一、说明2.1图解2.2 三次握手2.3 四次挥手 二、总结 前言 在计算机网络中,TCP协议是一种面向连接、可靠的、基于字节流的传输层通信协议。它的核心特性就是提供了数据的可靠传输,这种可靠性主要体现在连接的建立(三次握手&…

Three.js动效(第02辑):炫酷的3D动画效果。

Hi,大家好,大宇数据从本期开始分享three.js的能够实现的动效,每期分享九幅图,这是第二期啦。 一起来看看吧。

智慧财税赋能:乐财业合伙人如何实现行业弯道超车

这是一个充满竞争的时代,财税服务行业也是如此:低端市场只剩下价格的厮杀,中高端市场则蕴藏着无限商机。 与传统代账公司相比,乐财业合伙人通过平台的赋能支持在服务质量、响应速度、客户体验等方面实现质的飞跃,从而…

【数据库】四、多类型数据库管理工具分享

一、简介 DBeaver是一款免费、开源的数据库管理工具,支持多种关系型数据库,如Access、SQLite、MySQL、PostgreSQL、Oracle等。提供图形界面,方便用户查看数据库结构、执行SQL查询和脚本等。支持跨平台操作,并具备丰富的插件和扩展…

【代码随想录】【算法训练营】【第64天】 [卡码117]软件构建 [卡码47]参加科学大会

前言 思路及算法思维,指路 代码随想录。 题目来自 卡码网。 day 64,周三,继续ding~ 题目详情 [卡码117] 软件构建 题目描述 卡码117 软件构建 解题思路 前提: 思路: 重点: 代码实现 C语言 [卡码…

如果我贷款买一套 400W 的房子,我要给银行多送几辆迈巴赫?

作者:一只野生的八哥 买房攻略 2023 年至今,上海房价一跌再跌。俺已经蠢蠢欲动了,磨刀霍霍向"买房"。但是奈何手里钞票不够,只能向天再借 500 年打工赚钱。但是作为倔强的互联网打工人,想知道自己会被银行割…

elementui实现复杂表单的实践

简介 文章主要讲述在vue3项目中使用elementui框架实现复杂表单的方式。表单中涉及动态组件的生成、文件上传和富文本编辑器的使用,只会将在实现过程中较复杂的部分进行分享,然后提供一份完整的前端代码。 表单效果演示 基础信息 spu属性 sku详情 关键…

《梦醒蝶飞:释放Excel函数与公式的力量》 11.1 ISBLANK函数

第11章:信息函数 第一节 11.1 ISBLANK函数 11.1.1 简介 ISBLANK函数是Excel中的一个信息函数,用于检查指定单元格是否为空。该函数返回布尔值:如果单元格为空,返回TRUE;否则返回FALSE。ISBLANK函数在数据清理、条件…