UGUI锚点适配

article/2025/9/7 3:46:56

UGUI锚点设置

  • UGUI锚点
    • 锚点图
    • 锚点类型
      • 锚点类型一:相对于父节点的某一点的位置
      • 锚点类型二:与父节点的两边保持固定距离
        • 与父节点的左右两边保持固定距离
        • 与父节点的上下两边保持固定距离
      • 锚点类型三:与父节点的4边保持固定距离
    • Anchors锚点数值
    • Pivot轴心点
      • 轴心点与坐标
      • 轴心点与缩放
    • Alt与Shift快捷键
      • 按住Alt
      • 按住Shift
    • 代码控制
      • offsetMin,offsetMax
      • SetInsetAndSizeFromParentEdge

UGUI锚点

锚点图

设置锚点时,可以看到这个界面。这就是我们可以设置的锚点拉
锚点可选的类型

锚点类型

锚点可以分为3类;

锚点类型一:相对于父节点的某一点的位置

如下图,绿色框框出来的这9个锚点属于这种类型;
相对于父节点的某一点的位置
这种类型的4个锚点会汇聚到一起(每个小三角形是一个锚点),如下图;
坐标有4个参数,PosX和PosY代表 中心点Privot相对于此聚合锚点的位置。
在这里插入图片描述

锚点类型二:与父节点的两边保持固定距离

如下图,绿色框框出来的这6个锚点属于这种类型;
看图可以知道,这种类型可以细分为 与父节点左右两边保持固定距离 和 与父节点上下两边保持固定距离 两种。
在这里插入图片描述

与父节点的左右两边保持固定距离

这种类型的锚点分布在父节点左右两侧,左右各两个。如下图
Left/Right代表与父节点上下两边的距离;
PosY代表与锚点的Y距离(这4个锚点的Y坐标是一致的);
Height代表高度;
在这里插入图片描述

与父节点的上下两边保持固定距离

这种类型的锚点分布在父节点上下两侧,上下各两个。如下图。
Top/Bottom代表与父节点上下两边的距离;
PoX代表与锚点的X距离(这4个锚点的X坐标是一样的);
Width代表宽度;
在这里插入图片描述

锚点类型三:与父节点的4边保持固定距离

如下图,绿色框框出来的这1种锚点属于该类型
在这里插入图片描述
这种类型的锚点在上下左右各有1个,如下图
Left,Top,Right,Bottom分别代表与父节点4边的距离
在这里插入图片描述

Anchors锚点数值

如下图红框处,可以看到有Anchors属性,里面有Min和Max两个子属性。这代表什么意思呢,其实这是锚点的数值,前面分析的各种各样的锚点其实最终都是对应到了这里的值,相当于这里才是真正起作用的地方。
在这里插入图片描述
可以设想一下,我们在编辑器上可以打开锚点图,如下图,然后在里面选上我们想要的锚点。
在这里插入图片描述

但是如果在代码里怎么设置呢,代码里又没法选择。其实通过设置Anchor的值就可以达到我们想要的效果了。

		RectTransform rect = null;rect.anchorMin = Vector2.zero;rect.anchorMax = Vector2.one;

这里的anchorMin和anchorMax怎么理解呢,这里对应到下图里的红框处。
锚点基于父节点,父节点最左是0,最右是1;父节点最下是0,最上是1。

这anchorMin和anchorMax相当于长方形对角线的 左下点 和 右上点。确定了anchorMin和anchorMax,就能确定一个长方形。而这长方形的4个点就是4个锚点。相当于anchorMin和anchorMax就是在描述锚点的值。确定了anchorMin和anchorMax就确定了4个锚点
在这里插入图片描述

可以直接修改这两个值来达到上面锚点图的各种效果。除此之外,还能达到锚点图达不到的效果,例如我们想保持子物体的最左边在父物体的20%处,就可以把anchorMin的x设置0.2,然后把Left改成0。 这样就可以让子物体的左边出现在父物体的20%处。
而锚点图因为只是选了最代表性的锚点种类,是没有这种类型的锚点可选的

Pivot轴心点

Pivot轴心点不属于锚点,不过还是顺带讲一下。轴心点是挺重要的一个点,我们选中物体后按下W,显示坐标轴的位置点就是这个轴心点。默认是(0.5,0.5)正中间,这里我们改成(0.5,1)显示在上方。
在这里插入图片描述

轴心点与坐标

轴心点很关键,我们算坐标的PosX和PosY都是基于自己的轴心点与父节点的距离来计算的

轴心点与缩放

轴心点可以决定缩放的方向
当轴心点在正中间时,调整scale是向两边缩放的请添加图片描述
当轴心点在最左边,调整scale,可以看到只向右边缩放请添加图片描述

Alt与Shift快捷键

如下图红框处,可以看到
按住Alt可以在设置锚点时也设置位置;
按住Shift可以在设置锚点时也设置Pivot轴心点;
在这里插入图片描述

按住Alt

如下图,按住Alt后,按下与父节点4边对其的锚点,可以看到图片的宽高也会自动充满父物体。这是一种不错的快捷方式
请添加图片描述

按住Shift

如下图,按住Shift后,按下与父节点上边对其的锚点。可以看到Pivot由(0,0)变成(0.5,1)
请添加图片描述

代码控制

前面说了代码动态设置AnchorMin和AnchorMax,我们知道了如何把Anchor设置到我们想要的位置。
如果这时我们还想设置子物体到父物体各个锚点的距离怎么办呢。哈,你可能会想到设置Left,Right,Bottom,Top 不就好了吗。确实是的,不过代码里并没有这些值可以直接用,API里用offsetMin 表示 Left,Bottom;用offsetMax表示Right,Bottom

offsetMin,offsetMax

在这里插入图片描述
上面方形图片在父物体的中间,现在我们用代码来把它移到距离父物体左边100像素

            imgChild.rectTransform.anchorMin = new Vector2(0, 0.5f);imgChild.rectTransform.anchorMax = new Vector2(0, 0.5f);var width = imgChild.rectTransform.rect.width;var height = imgChild.rectTransform.rect.height;imgChild.rectTransform.offsetMin = new Vector2(100, -height / 2 );imgChild.rectTransform.offsetMax = new Vector2(100 + width, height / 2);

可以看到,图片的锚点和位置成功的设置了。
在这里插入图片描述
接下来我们尝试让子物体充满父物体

            imgChild.rectTransform.anchorMin = new Vector2(0, 0);imgChild.rectTransform.anchorMax = new Vector2(1, 1f);imgChild.rectTransform.offsetMin = Vector2.zero;imgChild.rectTransform.offsetMax = Vector2.zero;

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

SetInsetAndSizeFromParentEdge

可以看到 offsetMin 和 offsetMax,在设置子物体充满父物体时十分方便;但是在与父物体一条边保持指定距离时有点麻烦,虽然也可以。 这时我们可以用SetInsetAndSizeFromParentEdge来方便的跟父物体一条边保持距离

SetInsetAndSizeFromParentEdge(RectTransform.Edge edge, float inset, float size)

  1. 这个API的第1个参数是选基准边,有4个值
    RectTransform.Edge.Left,左
    RectTransform.Edge.Right,右
    RectTransform.Edge.Top,上
    RectTransform.Edge.Bottom,下
    要跟父物体哪条边保持距离,就选哪一个
  2. 第2个参数 是距离
  3. 第3个参数 是自己的宽度或高度,当以上下为基准边时,代表高度。当以左右边为基准边时,代表宽度。

接下来我们用这个方法,来实现跟父物体左边保持100距离。

//用imgChild.rectTransform.rect.width保持原来的宽度
imgChild.rectTransform.SetInsetAndSizeFromParentEdge(RectTransform.Edge.Left,100,imgChild.rectTransform.rect.width);

在这里插入图片描述
可以看到,直接一行代码就实现了效果,锚点和位置都设置好了。还是挺方便的


http://chatgpt.dhexx.cn/article/fBN0G2h9.shtml

相关文章

目标检测:锚点介绍及应用

目标检测:锚点介绍及应用 介绍应用生成锚点图步骤 锚点匹配步骤 介绍 锚点相当于在待预测的特征数据上预设出可能的物体边界框,即预设出特征数据可能代表的物体区域,每个区域通常由两个属性构成——尺度(scale或size)和…

锚点用法

一、常见用法 1、给指定标签添加id和name: id或name都可以实现锚点,id是name的升级版,更有效,可以只用id。 2、给a标签的href绑定想要跳转到的位置的id。 二、js锚点定位 document.getElementById("divId").scrollInt…

html 锚点 中文,html怎么设置锚点

html设置锚点的方法:1、设置一个锚点链接“...”;2、在页面中需要的位置设置锚点;3、在href中的路径后面追加“#锚点名”即可。 本文操作环境:Windows7系统、HTML5版,DELL G3电脑 html中的锚点页面内跳转的锚点设置 页…

实现锚点跳转

实现锚点跳转要使用&#xff1a;a标签的href属性 其它某一个标签的id属性 设置某个标签的id属性a标签的href属性设置为&#xff1a;# 想要跳转位置的标签的id属性 <a href"#abc">点击跳转</a> ...... <div id"abc">将要跳转到这里&l…

使用 Vue3 实现锚点组件

目录 1. 需求介绍 2. 实现过程 2.1 表单结构介绍 2.2 确定锚点组件接收的参数及使用方法 2.2.1 form-dom&#xff1a;需要被锚点组件控制的表单实例 2.2.2 active-anchor&#xff1a;默认激活的锚点 2.2.3 title-class&#xff1a;表单标题特有的类名 2.2.4 将 锚点组件…

快速了解什么是锚点

一、什么锚点 锚点是网页制作中超级链接的一种&#xff0c;又叫命名锚记&#xff0c;像一个迅速定位器一样&#xff0c;是一种页面内的超级链接。 二、身边的锚点案例 1、我们可以在百度百科中搜索【薛之谦】 薛之谦&#xff08;中国内地男歌手、音乐制作人、演员&#xff09…

KNN的数据插补方法总结

sklearn中的KNN在缺失值填补中的用法 参考链接&#xff1a;K近邻填补缺失值 如果缺失值是离散的&#xff0c;使用K近邻分类器&#xff0c;投票选出K个邻居中最多的类别进行填补&#xff1b;如果为连续变量&#xff0c;则用K近邻回归器&#xff0c;拿K个邻居中该变量的平均值填…

KNN算法优缺点总结,以及机器学习流程的总结

KNN算法作为一个最简单&#xff0c;也是一个很实用的机器学习的算法&#xff0c;日常的使用中也能处理很多问题&#xff0c;这里做一下总结记录 优点 1、KNN可以处理分类问题&#xff0c;同时天然可以处理多分类问题&#xff0c;比如鸢尾花的分类 2、简单&#xff0c;易懂&a…

(理论+代码)KNN算法

KNN&#xff1a; 一种非参数、惰性学习方法&#xff0c;导致预测时速度慢当训练样本集较大时&#xff0c;会导致其计算开销高样本不平衡时&#xff0c;对稀有类别的预测准确率低KNN模型的可解释性不强 文章目录 KNN&#xff08;思想&#xff1a;物以类聚&#xff09;一、 距离度…

Knn算法实例(代码来自机器学习实战,我加了详细的注释,仅供学习)

knn算法代码 Knn算法—识别手写数字&#xff08;机器学习实战&#xff09; 一、Knn算法原理&#xff1f; 1.通俗的说就是&#xff1a;对于给定的输入向量在训练集中找到与该输入实例最近的k个实例&#xff0c;统计这k个实例中每个实例&#xff08;按照标签分类&#xff09;所…

KNN数据库检索(简读):A Fast Partial Video Copy Detection Using KNN and Global Feature Database

与之前的大部分部分视频拷贝检测&#xff08;PVCD&#xff09;算法不同&#xff0c;该算法会逐个扫描参考视频&#xff0c;我们将PVCD视为视频搜索/检索问题。 本文提出了一种快速的部分视频拷贝检测框架。在这个框架中&#xff0c;参考视频的所有帧CNN-feature都组织在…

KNN的优化算法2:KD-tree

传统KNN缺点&#xff1a;数据量特别大时&#xff0c;需要计算参考点和每个样本点的距离&#xff0c;计算量非常大&#xff0c;所以提出一种优化算法-----kd-tree. 为了提高kNN搜索的效率&#xff0c;可以考虑使用特殊的结构存储训练数据&#xff0c;以减小计算距离的次数。 kd…

KNN算法及其MATLAB代码

一、KNN算法原理 1.算法概述 k近邻(k-Nearest Neighbor&#xff0c;简称kNN)学习是一种常用的监督学习方法&#xff0c;其工作机制非常简单&#xff1a;给定测试样本&#xff0c;基于某种距离度量找出训练集中与其最靠近的k个训练样本&#xff0c;然后基于这k个"邻居&qu…

kNN算法解析及应用【内附详细代码和数据集】

首先&#xff0c;我们需要了解什么是“kNN” kNN英文全称k Nearest Neighbor&#xff0c;即k近邻算法。 用途&#xff1a;分类问题kNN的工作原理&#xff1a;事先有一个有标签的样本数据集&#xff0c;然后输入没有标签的新数据后&#xff0c;将新数据的每个特征和样本集里的数…

KNN算法介绍及代码实现

k-近邻法简介 k近邻法(k-nearest neighbor, k-NN)是1967年由Cover T和Hart P提出的一种基本分类与回归方法。它的工作原理是&#xff1a;存在一个样本数据集合&#xff0c;也称作为训练样本集&#xff0c;并且样本集中每个数据都存在标签&#xff0c;即我们知道样本集中每一个数…

机器学习——KNN及代码实现

KNN KNN即k-nearest neighbor(k近邻法)&#xff0c;多应用于分类问题。 k近邻法的输入为实例的特征向量&#xff0c;对应于特征空间中的点。输出为实例的类别。 K近邻法原理 给定一个训练数据集&#xff0c;对新的输入数据&#xff0c;在训练数据集中找到与该实例最邻近的k个…

KNN算法及其改进

KNN算法优缺点 优点 (1) 精度高 (2) 对异常值不敏感&#xff1a;某个异常值对整个结果不造成影响&#xff1b; (3) 无数据输入假定&#xff1a;无数据的独立性等假设&#xff1b;缺点 (1) 计算复杂度高&#xff1a;因为要计算的点需要与所有点计算距离&#xff0c;所以复杂度很…

机器学习算法-KNN代码实现

机器学习算法-KNN代码实现 一、KNN算法初步理解二、代码实现1.数据集处理2.创建model3.可视化 总结 一、KNN算法初步理解 统计学习方法书上的解释&#xff1a;给定一个训练数据集&#xff0c;对于新的输入实例&#xff0c;在训练数据集中找到与该实例最邻近的k个实例&#xff…

【数据挖掘基础】——KNN算法+sklearn代码实现(6)

🤵‍♂️ 个人主页:@Lingxw_w的个人主页 ✍🏻作者简介:计算机科学与技术研究生在读 🐋 希望大家多多支持,我们一起进步!😄 如果文章对你有帮助的话, 欢迎评论 💬点赞👍🏻 收藏 📂加关注+ 目录 介绍算法的例子 KNN算法原理

KNN的优化算法1:距离加权

参考文章&#xff1a;https://www.cnblogs.com/bigmonkey/p/7387943.html 对参考文章中最后一部分说的有问题的地方进行了修改。 权值加权&#xff1a;为每个点的距离增加一个权重&#xff0c;使得距离近的点可以得到更大的权重&#xff0c;在此描述如何加权。 反函数 该方法最…