当前位置: 首页 > news >正文

「Unity3D」UGUI运行时设置元素的锚点Anchor,维持元素Rect的显示不变,即待在原处

在编辑器中,通过设置Raw edit mode,可以切换两种,元素锚点的改变模式:

  • 一种是锚点单独改变,即:不开启原始模式,保持原样,改变anchoredPositionsizeDelta
  • 一种是锚点联动显示,即:开启原始模式,不保持原样,不改变anchoredPositionsizeDelta

原理很简单,anchoredPositionsizeDelta都是相对于锚点Anchor的,所以Anchor变动,元素rect保持原样,就需要改变posdelta,而元素rect跟着变动,就可以维持posdelta不变。

那么,在运行时用代码设置anchorMinanchorMax,只有联动显示的模式,即相当于开启原始模式——不改变anchoredPositionsizeDelta,改变元素rect的显示。

但有时候,我们需要只改变锚点,而保持rect显示不变——这是利用锚点适配不同分辨率后的结果——这样其父类的改变,就可以不影响子类的缩放,如:将子类锚点设置为中心点。

解决方案,就是用offsetMinoffsetMax,来反向抵消anchorMinanchorMax的变化,从而维持元素rect的显示不变。

代码实现如下:

/// <summary>
/// Set the anchorMin [v2] without changing the [rectTransform] display.
/// Assume [rectTransform] has a parent, because the root is rarely operated on.
/// </summary>
public static void SetAnchorMinOnly(this RectTransform rectTransform, in Vector2 v2)
{
    var offsetOriginal      = rectTransform.anchorMin - v2;
    rectTransform.anchorMin = v2;

    var parentSize          = (rectTransform.parent as RectTransform).rect.size;
    rectTransform.offsetMin = parentSize * offsetOriginal;
}  


/// <summary>
/// Set the anchorMax [v2] without changing the [rectTransform] display.
/// Assume [rectTransform] has a parent, because the root is rarely operated on.
/// </summary>
public static void SetAnchorMaxOnly(this RectTransform rectTransform, in Vector2 v2)
{
    var offsetOriginal      = rectTransform.anchorMax - v2;
    rectTransform.anchorMax = v2;

    var parentSize          = (rectTransform.parent as RectTransform).rect.size;
    rectTransform.offsetMax = parentSize * offsetOriginal;
}    

相关文章:

  • go的gmp
  • 在rv1106上部署vue3
  • Python 中 lambda 表达式、推导式和其他函数用法对比
  • DML介绍
  • 智慧应急消防解决方案(35页PPT)(文末有下载方式)
  • Spring Cloud Stream - 构建高可靠消息驱动与事件溯源架构
  • 【动态规划篇】746.使用最小花费爬楼梯
  • SAP 标准弹窗 自定义弹窗 (所有弹窗弹框大全)
  • 鸿蒙系统liteos_m开发环境配置
  • 让网站变得更智能!架构标记如何提升SEO并吸引更多流量?
  • Word填写窗口功能详解:如何让文档填写更高效?
  • MATLAB 控制系统设计与仿真 - 26
  • wordpress主题开发框架(灵狐框架)介绍
  • (动态规划 区间dp/dfs 最长回文子序列)leetcode 516
  • 程序化广告行业(15/89):TD、流量供应方与流量方服务解析
  • CSS中粘性定位
  • 2025年AI搜索引擎开源项目全景指南:从核心框架到生态工具
  • 雷池WAF 处理 HTTP 请求的流程
  • 你的完美主义:从缺陷到超能力
  • 什么是SEO泛目(什么是SEO站群)
  • 网站留言发送到邮箱/百度站长之家
  • 政府门户网站建设的现状/爱站网关键词挖掘工具站长工具
  • 1688做网站费用/个人网站备案
  • 重庆建站培训/aso推广公司
  • 什么网站可以做旅行行程/安卓优化大师最新版
  • 广州小企业网站制作/厦门人才网官网招聘信息网