巧用九宮格以減少UI資源量


UI資源量對資源包大小和內存的影響

  UI資源具有以下特點:

    (1)UI資源幾乎都是圖片,而圖片是最占資源量的資源類型之一。

    (2)Unity不支持外部壓縮,即使在外部將一個10MB的圖片壓縮到只剩1MB,導入引擎之后它也會被解壓出來變成10MB,然后轉換為各平台特有的格式。

    (3)UI資源一般都貼着相機視窗顯示在最上層,也是游戲中人機交互的重要部分,一般需要保證高質量,所以一般都使用RGB32位色(真彩色),這會讓資源量更大。

    (4)UI資源一般涉及大量圖標、背景框等,如果要保證高分辨率,它們將會導致資源量很大。

  而且因為UI資源幾乎都是以圖集形式展現,所以在加載的時候,它會被整個一塊兒加載進內容,如果不優化好UI醫院兩,會增大內存的開銷。

 

什么是九宮格UI

  九宮格,顧名思義,就是9個格子,這9個格子並不要求一定要相同大小,是一種做UI常見的方式,來增強UI資源的復用性並減少資源量。九宮格的主要目的是處理圖片拉伸效果,因為圖片一旦被拉伸,他就會出現形變、模糊等問題,但是,有的圖片它的某一些部分又是允許被拉伸的。例如,一個UI背景框,它的中間部分幾乎是一個純色,允許被拉伸(純色被拉伸不會發生質量問題),但是,邊緣的4個角可能有一些特殊花紋或則倒角不允許被任意拉伸,這個時候即可以用九宮格,來使4個角不進行拉伸放大,只讓中間部分進行拉伸放大,達到一個小框拉大成一個大背景框使用的同時圖片質量又不會發生損傷的目的。

 

如何讓美術提供合適的九宮格UI資源

  讓美術盡量地提供九宮格資源,主要有以下一些原則:

    (1)不到萬不得已的情況下,對於大面積地板性質的UI,盡量只在4個角上做文章,其他地方用可用於拉伸的純色。

    (2)凡是左右可以縮短的UI、上下可以縮短的UI,都盡量使用九宮格切短了交給程序來做。九宮格不一定是9個格子,也可以是3個格子等。

 

如何在NGUI中划分九宮格

  當美術將一個資源圖片合並成一個非常精簡小巧的圖片交給客戶端程序后,客戶端程序需要對這個圖片進行切割九宮格。切割方法為如下。

    (1)將這個UI原件制作到圖集中去。

    (2)選中圖集的Atlas預設文件,在Inspector界面。

    (3)在Sprite Details中單擊Sprite按鈕,會彈出這個圖集中所有精靈的預覽圖,從中選中要切割九宮格的那個Sprite。

    (4)調整Border設置項,這個Border就是切割九宮格所需要的設置。它一共需要設置4個參數:Left、Right、Bottom、Top,這4個項代表着:從左邊朝右X像素位置處划一條豎着的線,從右邊朝左X像素位置處划一條豎着的線,從下邊朝上X像素處划一條橫着的線,從上邊朝下X像素處划一條橫着的線。這樣4條線就將一個Sprite切成了九宮格。

 

如何使用九宮格UI

  使用九宮格UI的時候,必須保證這個Sprite是已經切好了九宮格。然后創建這個Sprite,將它的模式設置為Sliced即可。

  Fill Center選項是自動拉伸九宮中的中心格子來充滿中心被拉大的區域,如果不勾選Fill Center選項,則九宮格被拉伸之后,中心格子不會自動充滿,會出現一個空隙。

  也可以將圖片設置為Advance高級模式,高級模式的本質區別是,允許對划分的九宮格的每一塊設置一個Type,比如左上角的格子平鋪、中心各自拉伸等。

 

去掉Mipmap以進一步降低資源包大小和內存占用

  在Unity中,MipMap紋理圖片的一個屬性,有開啟和關閉兩種狀態。比如說一張1024*1024的紋理圖片,在導入引擎之后它的默認狀態下MipMap是開啟狀態的,這會導致它會自動生成512*512、256*256、128*128、64*64、32*32的這么多張額外的圖片。主要用途是,當這個紋理離攝像機足夠遠時(例如一個人跑到了很遠的地方去),這個紋理圖片在游戲攝像機中就會很小,這個時候為了節省性能和達到更好的顯示效果,Unity會自動選用之前自動生成的眾多MipMap小紋理中的一張來替代最初的紋理。

  NGUI生成的UI圖集也是一張紋理圖片,它的默認狀態下也是選中了MipMap的,但是,UI是附着在攝像機視窗最上層的,幾乎不會存在像人物一樣跑到很遠的地方去的情況。所以,可以選中UI圖集的圖片文件,在圖片類型紅選擇Advance高級類型,然后取消掉MipMap的選項,再Apply應用保存即可。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM