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

【unity 中的RectTransform组件中的`RectTransform.sizeDelta理解】

RectTransform.sizeDelta 是 Unity UI 系统中 RectTransform 组件的一个关键属性,用于控制 UI 元素的大小。其作用与**锚点(Anchors)**的设置密切相关,具体行为取决于锚点的配置。以下是详细解释:


核心作用

sizeDelta 表示 UI 元素相对于锚点定义的参考区域的大小偏移量
它的值是一个 Vector2

  • x:水平方向(宽度)的偏移量。
  • y:垂直方向(高度)的偏移量。

行为取决于锚点类型

1. 锚点重合时(Anchors 为一个点)
  • 场景:锚点最小值(Min)和最大值(Max)相同(如 (0.5, 0.5) 表示中心锚点)。
  • sizeDelta 的作用
    此时 sizeDelta 直接等于 UI 元素的宽度和高度(单位:像素)。
    • 示例:
      rectTransform.sizeDelta = new Vector2(200, 100); 
      
      无论父对象如何变化,UI 元素始终保持 200x100 像素。
2. 锚点分离时(Anchors 为一个矩形)
  • 场景:锚点最小值(Min)和最大值(Max)不同(如 Min(0,0)Max(1,1) 表示拉伸到父容器)。
  • sizeDelta 的作用
    表示 UI 元素相对于锚点区域大小的额外偏移量
    • 计算公式:
      实际宽度 = 父容器宽度 × (Max.x - Min.x) + sizeDelta.x
      实际高度 = 父容器高度 × (Max.y - Min.y) + sizeDelta.y
      
    • 示例:
      若父容器为 400x300,锚点为 Min(0,0), Max(1,1)(占满父容器):
      rectTransform.sizeDelta = new Vector2(50, -20); 
      
      • 宽度 = 400 + 50 = 450px
      • 高度 = 300 - 20 = 280px

总结

锚点状态sizeDelta 的意义典型用途
锚点重合直接定义 UI 的宽高(像素)固定大小的元素(如按钮图标)
锚点分离定义相对于锚点区域的额外尺寸偏移动态调整边距或弹性布局

实际应用示例

  1. 居中一个固定大小的面板

    • 锚点设为 (0.5, 0.5)(中心点)。
    • 通过 sizeDelta 设置面板尺寸:
      panel.sizeDelta = new Vector2(300, 200); // 300x200 像素
      
  2. 为拉伸的面板添加边距

    • 锚点设为 Min(0.1, 0.1), Max(0.9, 0.9)(距离父容器边距 10%)。
    • 通过 sizeDelta 微调:
      panel.sizeDelta = new Vector2(0, 0); // 无额外偏移
      // 或
      panel.sizeDelta = new Vector2(20, -10); // 宽度+20px,高度-10px
      

注意事项

  • 单位sizeDelta 的单位是像素(与 RectTransform.rect.size 一致)。
  • localScale 的区别sizeDelta 改变物理尺寸,localScale 是缩放(不影响布局计算)。
  • 动态布局:结合锚点和 sizeDelta 可实现响应式 UI(如适应不同屏幕分辨率)。

理解 sizeDelta 的关键是先明确锚点配置,再根据偏移逻辑计算实际尺寸。

http://www.dtcms.com/a/318616.html

相关文章:

  • Unity3D水下场景与游泳系统开发指南
  • ubuntu18.04在fstab文件中挂载硬盘失败,系统进入紧急模式的解决方法
  • js 从 json 中取 key 的值
  • 云平台托管集群:EKS、GKE、AKS 深度解析与选型指南-第一章
  • 磁悬浮转子变转速工况下的振动抑制全解析
  • 什么是「回调函数」 Callback Function ?
  • Linux(17)——Linux进程信号(上)
  • 28.(vue3.x+vite)el-pagination中文设置(兼容其他elementPlus组件)
  • PaddleOCR 多线程并发问题
  • K8S命令记录
  • 利用多线程设计群ping工具
  • 5G随身WiFi怎么选?实测延迟/网速/续航,中兴V50适合商务,格行MT700适合短租、户外党~避坑指南+适用场景全解析
  • 无监督学习之K-means算法
  • 古多倍体化对被子植物适应性进化的遗传贡献--文献精度154
  • 本地部署 SQLite 数据库管理工具 SQLite Browser ( Web ) 并实现外部访问
  • 根据经纬度(从nc格式环境数据文件中)提取环境因子
  • RabbitMQ面试精讲 Day 12:镜像队列与Quorum队列对比
  • PCL 平面特征点提取
  • 2 SpringBoot项目对接单点登录说明
  • C语言控制语句练习题3
  • 数据结构与算法
  • 嵌入式 - 数据结构:栈和队列
  • [Oracle] ROUND()函数
  • 软件架构:系统结构的顶层设计与战略约束
  • 【前端】Vite中import.meta功能详解
  • 【多模态微调】【从0开始】Qwen2-VL + llamafactory
  • 小杰python高级(one day)——numpy库
  • 应急响应-windows篇
  • Spring选择哪种方式代理?
  • 12、Docker Compose 安装 Redis