Unity3d:NGUI 固定锚点及自适应分辨率

要实现相似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。

相关文章
相关标签/搜索