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。

相關文章
相關標籤/搜索