RectTransform继承于Transform,配合Canvas专门交给UGUI使用.控制UI的大小旋转缩放等。

1.Anchor

unity中的ui元素是有严格的父子关系的,子物体的位置是根据父物体的变化而变化的,而子物体和父物体联系的桥梁就是Anchor。在recttransform面板中可以调整锚点的值.min和max表征的是该点所在位置占父物体大小的比例.(默认左下角为0,0点,右上角为1,1点).当锚点重合在一起的时候 无论分辨率是多少,父物体多大,该UI元素的大小是恒定的。所以会出现在采用不同分辨率的时候,该元素的大小恒定,可能就会出现在高分辨率情况下元素太小或者低分辨率情况下元素比屏幕大的情况。

当锚点分散时,UI元素的四个角距离四个对应的锚点的距离是不变的,在这种情况下RectTransform的属性又变为了Left,Top,Posz,Right,Bottom,,其中的PosZ表征的是该元素到父物体在Z轴上的偏移,但并不影响unity的渲染顺序,unity的UI渲染顺序严格执行hierarchy中的UI上下顺序,剩下的四个值应该很好理解了,就是UI元素的每一条边距离父物体的每一条边的距离。如果我们将蓝色的图片(父物体)缩小,我们会发现红色的图片缩小了,但是其每个边距离父物体的距离是不变的,如果在把锚点变回集中的模式,你会发现大小变化了,如果出现下面的情况那就是因为TopBottom的值加起来比父物体的高还要高,所以计算子物体高的时候出现负数的情况,就会出现这种叉叉的情况,只要还原父物体的大小就ok(横向同理)。

2.pivort

Pivot中心点,就是该UI元素旋转缩放的中心点,左下角为(0,0)右上角为(1,1),PosXPosY的值就是Pivot到锚点的值。

3.offsetMax和offsetMin属性

offsetMa就是UI元素的右上角的坐标,减去AnchorMax的值,得到一个从AnchorMax指向元素右上角的向量(vector2类型),这个值是一个可读可写的属性,所以在锚点分开的的情况下我们可以在代码里面动态的去调整UI元素相对边界的距离,其次更重要的是,利用这两个值就可以计算出sizeDelta的值了。offsetMin同理

4.sizeDelta

sizeDelt其实就是offsetMax和offsetMin相减得到的新的向量。在锚点聚集情况下,offsetMax和Min的起点相同,根据向量相减的三角形法则,可以得到一个新的向量,这个新的向量的X和Y的大小正好UI元素的宽和高相等,所以在这个时候去设置sizeDelta的值,可以直接调整UI元素的大小。在锚点分散的情况下,offstMax减去Min,得到的将不再是UI元素的大小,而是一个新的奇怪的向量,这个向量代表的物理意义是,sizeDelta.x值就是锚框的宽度与UI元素的宽度的差值,sizeDelta.y的值就是锚框的的高度与UI元素的高度的差值。所以这个属性之所以叫做sizeDelta,是因为在锚点情况下其表征的是size(大小),在锚框的情况下其表征的是Delta(差值)

5.rect

它是一个只读属性,

不与UI元素所在的位置有关,只和其自身属性相关,所以其中的widthheight属性就可以让我们在任何情况下取得元素的大小。

6.anchoredPosition

在锚点聚集的情况下,anchoredPosition表征的是元素Pivot到Anchor的距离,在锚点分散的情况下,anchoredPosition表征的是元素Pivot到锚框中心点的距离。

7.Recttransform类中一些方法的介绍

(1)SetSizeWithCurrentAnchors(Animations.Axis axis, float size) 无论锚点聚集还是分散情况,都可以通过直接设置rect中的widthheight值来改变UI元素的大小。

(2)GetWorldCorners(Vector3[] fourCornersArray) 使用这个方法,可以取得UI元素四个角的世界坐标,具体使用方法,先建立一个长度为4的vector3数组,然后调用这个方法,把新建的数组作为参数穿进去,调用一次后,数组被赋值,里面的四个元素分别是UI的左下角 ,左上角右上角右下角

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

这个方法就比较冷门了可能,不过还是挺强大的。调用这个方法,可以根据父物体的Edge(某一边)去布局。其中第一个参数就是用于确定基准的边,第二个参数是UI元素的该边界与父物体该边界的距离,第三个元素是设定选定边界轴上UI元素的大小,在使用这个方法的时候要注意锚点也会改变,改变的规则为,边界轴方向的锚点的最大和最小值改变为极值另一个轴的不变。

(4)ScreenPointToWorldPointInRectangle(RectTransform rect, Vector2 screenPoint, Camera cam, out Vector3 worldPoint)

屏幕空间点转换为世界空间点,该点在矩形变换的平面上。

(5)ScreenPointToLocalPointInRectangle(RectTransform rect, Vector2 screenPoint, Camera cam, out Vector2 localPoint);屏幕空间点转换为矩形变换颞部的本地位置,该点在矩形变换的平面上。

(6)WorldToScreenPoint(Camera cam, Vector3 worldPoint);世界坐标转化为制定相机的屏幕坐标。

unity的RectTransform相关推荐

  1. 关于Unity中RectTransform和Transform

    以前一直以为在Inspector面板上的是Transform,后来才发现原来2D是RectTransform,3D是Transform 3D面板上显示的是位置坐标组件Transform,2D面板上显示 ...

  2. unity中RectTransform的各个值得获取

    1.改变RectTransform的top GetComponent<RectTransform>().offsetMax = new Vector2(GetComponent<Re ...

  3. unity中rectTransform的宽和高如何取

    锚点集中 RectTransform rect = transform.GetComponent<RectTransform>(); 1)通过sizeDelta rect.sizeDelt ...

  4. Unity 蓝湖 关于UI工作流优化的思考

    我们Unity项目关于UI界面制作的工作流是这样的,UI设计人员将设计好的UI界面在Adobe XD中上传至蓝湖,Unity程序猿从蓝湖中下载切图资源包导入项目工程中,根据蓝湖中的效果图.样式信息进行 ...

  5. Unity进阶技巧 - RectTransform详解

    一.Pivot属性详解 首先为了让大家更好的理解内容,我在Unity中创建了两个UI控件,一个Plane控件,作为父对象,一个Image控件,作为子对象. 然后我们选中子对象,来看看它的RectTra ...

  6. Unity——RectTransform详解

    Unity--RectTransform详解 目录 1.Anchor(Min,Max) 2.绝对与相对布局 3.Pivot 4.Offset(Min,Max) 5.SizeDelta 6.rect 7 ...

  7. Unity中的RectTransform

    RectTransform是Transform的子类,继承了Transform的一些属性 一:Anchors --绝对布局:当Archors的Min和Max相等时,Archors呈现为一个点,称为锚点 ...

  8. Unity 之 UGUI RectTransform矩形变换组件详解

    Unity 之 UGUI RectTransform矩形变换组件详解 1,属性面板 2,详细信息 3,代码操作 4,使用实例 4.1 传说中的自适应 4.2 锚点的另一种使用方式: 4.3 蓝图和原始 ...

  9. Unity 在代码中 动态改变RectTransform位置及宽高 的方法整理

    原文链接(尊重原著):[100个 Unity实用技能] | Unity 在代码中 动态改变RectTransform位置及宽高 的方法整理_unity 修改recttransform_呆呆敲代码的小Y ...

最新文章

  1. Django1.11 扩展User属性增加头像上传功能
  2. ubuntu 安装mysql5.6
  3. 如何从开发人员走向架构师
  4. jquery extend函数
  5. vue组件-使用插槽分发内容(slot)
  6. weixin微信公众号一站到底游戏代码(有点普通)
  7. linux下mysql5.7创建用户_Linux下mysql5.7 创建、删除用户与授权
  8. java计算机毕业设计springboot+vue基本微信小程序的医疗耗材管理系统 uniapp
  9. win下编译TNN安卓库(静态或者动态) + android studio ndk调用
  10. python-最速下降法
  11. 拿出大把真金白银回购护盘,真心实意的格力,为何买不到股民信任
  12. Rundll32.exe 转自5iuu.com
  13. 一款轻巧简单疫情动态网站源码
  14. TCP/IP五层模型介绍
  15. win7任务栏右下角图标空白解决办法
  16. SPOJ DQUERY - D-query (莫队算法)
  17. 机器学习入门-kNN算法实现手写数字识别
  18. 服务器搭建微信会员卡系统,智络会员管理系统如何与微信对接
  19. 常微分方程数值解matlab欧拉,matlab 常微分方程数值解法 源程序代码
  20. Sorting Pancakes(dp)

热门文章

  1. 霹雳吧啦Wz语义分割学习笔记P5
  2. Docker Harbor概述及构建
  3. python中imag是什么意思_Python-在imag中查找对象的中心
  4. Python标准库:内置函数complex([real[, imag]])
  5. U盘安装Fedora 24时出现的几个问题及解决办法
  6. matlab 高级绘图函数
  7. iPad 必备软件 | 帮你实现百度云倍速
  8. php 图片上载 wordpress,WordPress 使用 Jcorp上传并裁剪图片作为自定义头像 —— PHP 后台部分...
  9. ipython notebook 如何打开.ipynb文件?
  10. 张小龙演讲PPT: APP产品经理必须要懂的30条原则