詳解Unity 4 6新UI的布局

2022-07-16 23:51:19 字數 2121 閱讀 2689

本文所講的是unity 4.6中新加入的ugui,官方稱unity ui,而不是過去的ongui式的舊ui(官方稱legacy gui)。

我曾經在8月份對照4.6 beta的文件寫過一篇筆記學習unity 4.6新gui系統,但對anchors不夠深入,而且有了一些api上的變化。下面就是我對新ui布局的理解,以及最後canvas scaler元件的介紹。

放置任意乙個ui元素到場景中,首先可以看到自動建立了乙個canvas物件;另外這個元素一定會擁有乙個rect transform元件。

rect transform是專為ui元素準備的,它的乙個重要屬性就是錨點anchors,用於指定自身相對父級的布局。對於這個ui元素,它的父級就是canvas。錨點一共有四個,分別對應自身矩形的四個頂點。在父級元素形狀發生變化時,四個錨點到四個頂點的偏移offset不變

我們可以直接在場景中拖動錨點來設定,拖動時有數值顯示,非常直觀。但有時候我們希望更精確一點。注意到四個錨點可以聚集在一點,也可以在一條線,也可以分散成矩形。這樣,它們的位置總能由兩個點來確定,就是圖中anchors下面minmax兩個屬性。min代表更左邊、更下邊的點,max代表更右邊、更上邊的點。數值範圍是0~1,以左下為(0,0),右上為(1,1)。圖中的錨點可以看出就是矩形的中心。

其實通過左上角你已經可以直**出錨點的位置了。點選左上角可以彈出乙個選單,這裡是unity預置的幾種布局。有固定在一點的,也有在一條邊上的,還有更加自由的布局。確定一種模式後,右邊的屬性也會隨之變化,方便你調整元素的大小或偏移。

在固定在一點的模式下,元素的形狀不變,位置隨這一點變化。所以可以指定它的兩個座標軸的偏移pos xpos ypos xpos y均為0時,元素的支點和錨點重合。因為大小不變,可以指定寬和高。效果如下圖:

固定在一條邊的情況下,元素的形狀和位置均可能發生變化。以下圖的固定在下邊為例,受偏移量影響,它的寬會變而高不變。所以它可以設定的屬性是leftrightpos yheight,分別代表元素左(右)邊距離父元素左(右)邊的距離,支點距父元素下邊的偏移、元素的高度。

注意不管是leftright還是topbottom都是以元素的邊為準,而pos xpos y則是以支點為準

這種固定在邊的兩個頂點上的模式,這條邊會顯示為stretch。如果把錨點從頂點移開,則會變為custom對於custom,當父元素形狀變化時,元素自身會按比例變化。效果如圖所示:

如果在兩個座標軸上都用custom,那麼元素就能在不同的螢幕上顯示類似的大小。以下圖為例,如果想讓logo(image物件)顯示在螢幕中上部分,並且在不同解析度下佔據的比例都相同,就可以設定為custom,將錨點框住想顯示的位置,並將上下左右邊距都設為0,就能達到這種效果。

最後介紹一下canvas scaler這個元件。可以在canvas上通過add component找到這個元件。

這個元件有三種模式:

選擇scale with screen size並設定預設解析度,其他解析度下的ui就會通過設定的解析度拉伸得到。而且canvas也會調整到預設解析度大小,方便ui設計。應該算是乙個偷懶的方法吧。在4.6 beta中,曾經有個reference resolution元件,現在已經被它替代了。

Unity 4 6 x記憶體優化紀要

懷疑有object有洩漏,沒有被gc的時候,可以嘗試在class中的ctor和dtor,及各種clone函式中加入自己的計數,在合適地方列印出該class靜態count的數值,確定是否被釋放。使用object findobjectsoftype typeof gameobject 來檢查有多少gam...

Unity3D高階4 6 Unity3D 多執行緒

unity3d從入門到高階 文章目錄及設定這個專欄的初衷 大家是不是一看這個標題都想吐槽了,因為很多資料都介紹unity不支援多執行緒,unity的多執行緒其實都是協程等等說法,然而協程也並不是真正的多執行緒。協程其實是等某個操作完成之後再執行後面的 或者說是控制 在特定的時機執行。那unity到底...

Unity資源優化詳解

首先從聲音開始 在unity5中匯入聲音檔案我們能看到類似下面的面板 我們先看第乙個選擇load type,他有三個可值 decompress on load,compressed in memory,streaming。1 decompress on load 在硬碟上壓縮這個檔案,並在第一次載入...