Unity3D之UGUI:Rect Transform与Anchor

Rect Transform

咱们都知道,Unity3D中全部的GameObject都必需要携带一个Transform组件,且该组件没法移除,那么做为UI显示的GameObject则不是携带Transform而是使用Unity3D专门为UI组件设计的Rect Transform组件,以下:html

技术分享

另外说一下,Canvas Renderer也是UI组件必须携带的组件。布局

咱们来看一下其为咱们提供的功能:设计

位置

位置是以像素为单位,其具体的值则以锚点为准,表示和锚点距离,其中x轴从左到右的数值愈来愈大,y轴从下到上的数值愈来愈大,其中的Pos Z和Transform中的position.z效果一致,但不是使用该值来表示UI的深度。保留该值估计是为了在3D UI的一些效果实现上的考虑。3d

尺寸

不一样于缩放,这两个值设置了UI的尺寸,为负并不会翻转UI而是直接不显示。orm

技术分享

上面的两个按钮,上方的按钮是设置width为320,下方则是将width为160的按钮的scale x设置为2。htm

旋转

效果同Transform,通常配合Tween使用。对象

缩放

效果同Transform,通常配合Tween使用。blog

深度

不经过NGUI的深度,在UGUI中的深度彻底使用树形结构来表示,同一层级里位于下方的节点会覆盖掉位于上方的节点,以下:it

技术分享

修改一下树形显示列表后以下:io

技术分享

Anchor

Rect Transform除了上面提到的功能外,还提供了描点功能,该功能主要实现相对布局的功能。

技术分享

同时咱们还能够很是直观的配置描点:

技术分享

锚点描述的是当前UI的父对象的位置信息。而锚点则表示当前对象坐标的(0, 0)点。

非stretch

咱们能够发现有Left、Center、Right、Top、Middle及Bottom六个设置项,这6个项目能够组合出9种形式的锚点,分别对应了当前UI父对象的9个方向的位置,这样方便咱们的UI作相对位置的调整,好比当UI的坐标为(0, 0),选择CenterMiddle则当前UI为居中状态,而选择TopLeft则UI会位于父对象的左上角。

CenterMiddle:

技术分享

TopLeft:

技术分享

stretch

除了上面说到的还有一种stretch状态,该状态则表示当前UI距离父级UI边缘的距离,当设定了以后则是使用一种相似相对位置的方式来定义UI的位置及尺寸,咱们看下:

技术分享

当咱们选择水平和垂直都为stretch时,Pos X、Pos Y、Width和Height都改变为Left、Top、Right及Bottom,即便用了相对位置来排列,咱们调整一下看看。

技术分享

咱们发现按钮始终和父级保持10个像素的距离,调整父级的尺寸会修改子级的尺寸,以下:

技术分享

咱们发现按钮始终为一种相对的位置呈现。

自定义Anchor

咱们以前定义锚点都是直接在下拉菜单中选择,那么锚点是否能够自定义,答案是确定的,好比当咱们须要下面的效果时就须要自定义Anchor了。

咱们但愿子UI的尺寸始终和父UI的尺寸保持必定的比例,好比不管父UI多大,子UI都占其10%的空间。

咱们只须要将子UI的锚点设置为一个合适的值便可,好比设置为子UI的尺寸,以下:

技术分享

咱们复制几个改变大小看看效果:

技术分享

Pivot

注册点或者叫作中心点,若是说Anchor表示的是UI的父级的位置,那么Pivot则表示UI自己的(0, 0)点的位置。

咱们首先开启Pivot:

技术分享

而后就能够在场景中修改UI的Pivot了,以下:

技术分享

这个小蓝圈就是Button组件的中心点,表示Button组件的(0, 0)点。

下面咱们看一个实例:

我但愿在屏幕的右上方显示一个按钮且按钮和屏幕的间距为10,只须要将按钮的中心点也设置到右上方便可,以下:

技术分享

补充

蓝图模式

技术分享

表示是否忽略掉物体的旋转。点开不能对物体进行旋转。

RawEdit模式

技术分享

表示当修改Anchor时UI的位置及尺寸是否会根据Anchor进行匹配,点开能够进行匹配。

原文:http://www.cnblogs.com/hammerc/p/4837650.html

相关文章
相关标签/搜索