要实现相似NGUI官方例子1的2D UI界面时,假如相似下图ide
左上地图、左下移动、右下开火、底部血条、右上和右边按钮。函数
若想要固定位置,且能自适应分辨率。spa
首先,建UI ROOT2D,默认移动到panel下,再在panel下新建空物体offset用于调整位置,再在offset下建UI贴图sprite、label、button之类。blog
结构以下:it
UI ROOT(2D)sed
----Cameradate
----Panel自适应
----Anchor-BottomLeft 设置side属性为BottomLeft方法
----offset-move 调整位置使其显示正确im
----sprite
----Anchor-BottomRight
----offset-fire
----sprite
同理再建其余Anchor-TopLeft,Anchor-TopRight、Anchor-Right之类的。
这个时候已经能够实现固定锚点了。可是还有自适应分辨率。
在panel上附加UIStretch 脚本,此脚本用于自适应缩放。
有以下几种方式:
Horizontal:只缩放水平方向
Vertical:只缩放垂直方向
Both:缩放两个方向
BasedOnHeight:基于高度等比缩放
假如你的UI是在800*480的正常尺寸。那么有两种方法。
1、把Camera设置size为800。选Both方式。
2、Camera的size仍为1,设置UIStretch 脚本的Relative Size 为,x:1/800,y:1/480。
推荐第二种。
设置完会发现虽然能够缩放,但对于圆形会变拉伸成椭圆。
为解决这个问题,咱们再加一种方式:(参考别人的,不知道出处了。。。)
BasedOnWidth:基于宽度等比缩放
修改UIStretch脚本
Enum Style加上
BasedOnWidth
Update函数里加上
else if(style == Style.BasedOnWidth)
{
localScale.x = relativeSize.x * rectWidth;
localScale.y = relativeSize.y * rectWidth;
localScale.z = localScale.x;
}
而后选择BasedOnWidth模式。把Relative Size 的x和y都设置为:1/800。