Unity---UGUI---UI優化---圖集和層級關系





參考博客:

https://www.xuanyusong.com/archives/3304

https://blog.csdn.net/PS_show/article/details/100525151

https://blog.csdn.net/qq_38721111/article/details/79870373

1、UGUI 圖集

1.1、為什么要使用圖集

對於正常使用的Image,在場景中每添加一個Image,都會調用一次DrawCall來讓GPU進行繪制。如果繪制100個Image,就需要100個DrawCall,太消耗性能了。

而使用圖集,我們就可以歸類不同種類的圖片,之后就可以一次進行多張圖片的繪制處理,只需調用一次DC,提高了效率。

1.2、如何設置圖集

首先我們需要在設置中開啟圖集使用 Edit->Project Setting->Editor

Disabled:不啟用圖集
Enabled For Builds:只在打包時啟用
Always Enabled:永遠啟用


然后選中資源圖片,在Packing Tag中即可設置圖片圖集的名字。
注意:圖片不能放在Resources下,Resources文件夾下的資源將不會被打入圖集。

設置好之后,就可以在 Window->Sprite Packer中查看圖集。

1.3、圖集優化

第1種情況:只有3個img,沒有設置圖集,且三個img互不重疊。

此時的DrawCall為3。(Window->Frame Debugger)

第2種情況:只有3個img,沒有設置圖集,且三個img交叉重疊。

和情況1一樣,DrawCall為3。

第3種情況:只有3個img,設置為一個圖集,且三個img互不重疊

此時的DrawCall為1。

第4種情況:只有3個img,設置為一個圖集,且三個img交叉重疊。

和情況3一樣,DrawCall為1。

第5種情況:只有3個img,設置為兩個圖集(注意是img2單獨一個圖集,img1、3為一個圖集),且三個img互不重疊。

此時的DrawCall為2。

第6種情況:只有3個img,設置為兩個圖集,且三個img交叉重疊。

注意:到了第6種情況,終於到了要說的地方了。此時為什么不是2個DC,而是3個呢?

Unity會按照Hierarchy層級順序從上向下渲染,所以最下面的UI一般會渲染在最前面。
但是如果UI之間產生了交叉重疊的情況,圖集的合批會在不同圖集重疊的地方被打斷,所以第6種情況中的兩個圖集就產生了3個DrawCall。

同樣的,UGUI的Text組件使用的字體文件,每一種字體可以看成一個圖集。
所以使用Unity自帶的Button組件做這個實驗也會得到一樣的結果:
兩個相同的btn,不重疊,會產生2個DC。
兩個相同的btn,交叉重疊,則會產生4個DC。

優化方向:
1、不同UI之間盡量不要重疊。
2、不同圖集的圖片不要交叉使用。
3、Image與Text不要交叉使用,Text盡量放在所有Image的上面,即Hierarchy的最下面。
4、Hierarchy層級關系做分層處理,每一個Atlas的圖片放在同一個層里。


免責聲明!

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



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