看Unity3D文档像看国内教课书一样,一些概念,不懂的时候看还是不懂,明白了以后再看,好像也没有说错。好几个做Unity3D的朋友跟我吐槽过U3D的文档质量,相比Apple贴心的技术文档相去甚远。

话虽这么说,权威的资料当然还是官方的,建议先仔细读一遍,不懂的再往下读:
http://docs.unity3d.com/Manual/UISystem.html

网上的教程大多泛泛而谈,就不吐槽了。好在还找到了一篇比较好的解读,在此谢谢作者白猫。文章链接在下面
http://www.cnblogs.com/whitecat/p/4159815.html

uGUI里面AutoLayout比较特别,我就此详细描述一下,希望能减少“教科书”的理解障碍。

RectTransform的理解

UI元素有专门的RectTransform组件来描述元素的几何信息,继承于Transform,Inspector中其属性如下图。

RectTransform属性

Anchors,锚点

我们首先需要认识Anchors。官网上的图片很好表达了Andhors的功能,请恕我实践下拿来主义。

锚点全在中间的情况

锚点全在右下角的情况

锚点在两个角的情况

锚点分开的情况

善于观察的同学可能已经发现,不管什么情况,button的四个顶点到相应锚点的相对位置是不变的:

规律:button的四个顶点到相应锚点的相对位置是不变的

当4个锚点都在一起的时候,RectTransform会显示Pos X,Pos Y,Width,Height四个属性可供修改。

当4个锚点都在一起

当不在一起的时候,RectTransform可调整的属性会有变化。

锚点不在一起的时候,Inspector中变化1

锚点不在一起的时候,Inspector中变化2

锚点不在一起的时候,Inspector中变化3

Anchors的Min和Max分别是正规化的值(从0到1),表示占父RectTransform的百分比,下图中AnchorMin=(0.1,0.1) AnchorMax=(0.9,0.9)

AnchorMin、AnchorMax

Pivot,UI的中心点

UI元素的旋转和缩放是围绕pivot进行的。RectTransform组件中,Pivot属性是一个正规化的二维向量,用来描述中心点在本身矩形大小的位置。默认值为(0.5, 0.5),即几何中心。

以上是RectTransform可视化的编辑属性,实际上RectTransform类的属性是怎样的?查阅RectTransform的官方文档如下:

anchoredPosition
The position of the pivot of this RectTransform relative to the anchor reference point.

anchoredPosition3D
The 3D position of the pivot of this RectTransform relative to the anchor reference point.

anchorMax
The normalized position in the parent RectTransform that the upper right corner is anchored to.

anchorMin
The normalized position in the parent RectTransform that the lower left corner is anchored to.

offsetMax
The offset of the upper right corner of the rectangle relative to the upper right anchor.

offsetMin
The offset of the lower left corner of the rectangle relative to the lower left anchor.

pivot
The normalized position in this RectTransform that it rotates around.

rect
The calculated rectangle in the local space of the Transform.

sizeDelta
The size of this RectTransform relative to the distances between the anchors.

乍一看有点费解,这里有必要解释下:

anchoredPosition

可以理解为Pivot点相对于Anchor reference点的位置。Anchor reference点,我是这样理解的:当四个anchors点在一起的时候,这个点就是anchor reference点;否则这四个点的中心点就是anchor reference点。
照这个推理,anchorMax和anchorMin的值将影响anchoredPosition的值。具体还需要demo研究来确认。

但可以确定的是,当一个UI元素不需要自动拉伸行为时,用anchoredPosition + sizeDelta来设置位置和大小是比较方便的方法。

anchorMax、anchorMin和Inspector中的意义一致,需要注意的是,当UI元素不需要自动拉伸时,AnchorMax和AnchorMin是相等的。

AnchorMin与AnchorMax

UI元素需要自动拉伸时,使用anchorMax、anchorMin + offsetMax、offsetMin来设置UI的位置及大小会比较方便。
其中,anchorMax.x == anchorMin.x,height会自动拉伸,width固定不变。
anchorMax.y == anchorMin.y,width会自动拉伸,height固定不变。

不知不觉已过凌晨1点,先介绍到这里。关于uGUI的更多内容,将在后续博文中继续,敬请期待。

U3D Anchors相关推荐

  1. qml学习笔记(二):可视化元素基类Item详解(上半场anchors等等)

    原博主博客地址:http://blog.csdn.net/qq21497936 本文章博客地址:http://blog.csdn.net/qq21497936/article/details/7851 ...

  2. U3D的Collider

    被tx鄙视的体无完肤,回来默默的继续看书,今天看u3d,试了下collider,发现cube添加了rapidbody和boxcollider后落在terrain后就直接穿过去了... 找了一会原因,看 ...

  3. 干货 | 详解对象检测模型中的Anchors

    点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 本文转自:opencv学堂 导读 给大家再次解释一下Anchors ...

  4. CoronaSDK 对象锚点探秘(Anchors)

    所有的displayObject 都有自己的origin和anchors. origin是一个对象相对于parentGroup的位置,主要由object.x和object.y来控制. anchors是 ...

  5. u3d android,u3d与安卓交互(Android studio)

    AndroidStudio导出 .jar文件,在Unity里使用 开发环境:as2.3.2.0,u3d5.6.0 as部分: 1.新建工程时的最低版本跟u3d中相同 2.Unity\Editor\Da ...

  6. U3D 飞机大战(MVC模式)解析--面向对象编程思想

    在自己研究U3D游戏的时候,看过一些人的简单的游戏开发视频,写的不错,只是个人是java web 开发的人,所以结合着MVC思想,对游戏开发进行了一番考虑. 如果能把游戏更加的思想化,分工化,开发便明 ...

  7. U3D包大小优化之microlib

    当迩想把最小类库发上来,迩需要把Stripping Level设置为Use micro mscorlib 这里是MICROLIB所能使用的包的类库列表:http://docs.unity3d.com/ ...

  8. u3d局域网游戏网络(c# socket select 模型)

    之前写了一篇. 发完之后第二天实际应用到游戏之后还是发现了一些小毛病. 比如网络模块有重复使用(多对象)的情况.所以将静态类该成了普通类. 比如安卓下会有些异常出现导致游戏逻辑不正常.所以网络相关的函 ...

  9. U3D打apk包的常见错误

    总结一下U3D打apk一些常见问题和错误吧! 1.配置android sdk的问题 要打android的apk包,必须先下载一个官方的sdk包.解压到本地后,在u3d中关联sdk 在u3d的菜单栏点选 ...

最新文章

  1. FluxSink实例及解析
  2. POJ-1322 Chocolate 动态规划
  3. 一个简单的WebService服务
  4. 收银员英文缩写_如何在没有收银员的苹果商店购买东西
  5. Linux内核中流量控制(4)
  6. Java并发编程中级篇(二):使用Semaphore信号量进行多个资源并发控制
  7. php条件语句中大括号必须,PHP条件,括号需要?
  8. 信息隐藏预测算法之MED
  9. 【微信小程序】(一)开发工具下载与界面介绍
  10. 破解完全入门篇 第七章-寻找软件的注册码
  11. 万字总结:金融市场基础知识
  12. MainMenu.xib
  13. GBASE 8s UDR内存管理_01_mi_alloc
  14. My SQL 安装配置
  15. Android课题研究的主要观点,课题研究的主要内容
  16. thinkphp6 验证码总是提示不正确
  17. 修改系统时区(基于Debian的系统)--用Enki学Linux系列(15)
  18. 成为测试大牛——测试领域的变与不变
  19. IIR数字低通滤波器
  20. LARS算法的几何意义

热门文章

  1. 傅里叶级数到傅里叶变换
  2. 几何光学学习笔记(3)- 2.1光线经过单个折射球面的折射
  3. 小米路由器3无线网连接到服务器,小米路由器3的设置方法步骤
  4. 制作hp服务器u盘,制作HP smartstart启动U盘
  5. Linux——(1)基本命令
  6. 求职套题2---各大公司
  7. 2022广东省安全员B证第四批(项目负责人)上岗证题目及在线模拟考试
  8. Ubuntu 18.04 无法自动检测耳机解决方法
  9. keyshot渲染玻璃打光_keyshot8耳机渲染打光教程
  10. Android学习记录(二十八)--Android apache httpclients的使用。