400-650-7353
您所在的位置:首頁 > IT干貨資料 > unity > 【Unity基礎知識】大型游戲中UI優化原則匯總(下)

【Unity基礎知識】大型游戲中UI優化原則匯總(下)

  • 來源:Unity干貨資料
  • 2020-08-03 21:56:04
  • 閱讀()
  • 分享
  • 手機端入口

四、動靜分離

動靜分離就是說同一個界面下的UI,可活動的元素(血條,藍條,傷害數字,CD)放在一個Canvas下,不可活動的元素(人物頭像,商城,和平,抽獎等按鈕)放在另一個Canvas下。雖然兩個Canvas打斷了合批,但是卻減少了網格的重建時間,總體上是有優化的。

為什么要避免網格重建那? 如果重建的網格過大,就會很卡。比多一個drawcall還卡。

假如同一個Canvas里面有100個Image,Canvas將會把100個單獨的Mesh合并成一個大的ShareMesh,用于渲染。

如果剛好這100個Image都是使用了相同的圖片或者是同一個圖集里面的圖片,那么由于使用的Mesh只有一個(ShareMesh),假如UI元素非常多,ShareMesh可能有2M大小(這是一個比較極端的例子,實際上一般的ShareMesh都是幾百K,出現這么大的ShareMesh本身就需要注意了),材質球都是同一個(內置的默認材質球),貼圖也是同一張,所以得到的結果就是,DrawCall只有一個。

如果這個100個Image是不會動的,合并ShareMesh沒有太大的問題

但是如果是上面的血條,藍條,名字板,CD,文字聊天信息這些需要動的UI元素和其他UI元素合并同一個ShareMesh的,那么問題就來了,血條由長變短,頂點發生了改變,導致2M的整體ShareMesh也需要重新的生成頂點信息,并且整個ShareMesh重新渲染,這明顯是得不償失的。

當然動態的UI還包括文字部分,其中Text是UGUI產生頂點數量的重災區,一個字符產生4個頂點,如果再加上Shadow則相當于又把Text復制了一遍產生8個,

Outline則會將Text復制4遍產生20個頂點。所以Shadow、Outline不但會產生額外的OverDraw外還會產生過多的頂點數,

一定慎用,確實需要請選擇用圖片背景替代,其次選擇相對較省的Shadow。

五、動態圖集

所謂動態圖集,就是圖集是在游戲運行過程中生成的,而不是在游戲制作階段生成的。程序生成一張或n張較大的Texture圖集(根據項目需求,可以設置Texture大小為1024*1024或2048*2048等等),Image加載進來的Texture不直接使用,而是將Texture信息按照一定規則和排列拷貝到這張Texture上,以達到n個Image共用一張Texture,合并Draw Call的目的,同時Image銷毀不用之后,Texture信息從大的Texture圖集中移除,達到圖集空間重復利用的目的。

什么時候需要打動態圖集那?

我們先來看看靜態圖集的缺點:

1、如果某個界面只需要出現一個圖集中包含的小圖標(比如掉了一個物品,學會某種技能),這個小圖片是包含在一個大的靜態圖集里的,那為了顯示一個很小的圖標,就得加載一個很大的圖集,從而導致打開該界面很慢(由于加載大的圖集)。

并且后期熱更新的時候,如果修改或者添加一張圖片資源,那么就意味著要更新整個圖集的資源。

2、那打成多靜態個圖集那?這樣只有一個圖標的界面沒問題了。有多個圖標出現的界面就有問題了,加載的也多,drawcall也多,并且為了合并Draw Call不被打斷,要小心地設置UI的層級,避免ABA問題造成合批被打斷,操作復雜度就提高了。


物品圖標打了多個圖集

一個界面顯示多種物品圖標

下面demo只是簡單的演示一下動態圖集的主要思路,圖片分配算法也只是將大圖片分成64x64的一個一個分區,每個分區采用引用計數開控制是否在使用圖片,用于維護整個UI系統的話,這種算法并不適用,但是如果只是用于icon圖標的話,由于icon圖標是固定尺寸的,所以這套算法就很合適了。

動態圖集的缺點:當然動態圖集也是有缺點的

1、動態圖集因為將圖集的生成過程延遲到了游戲運行時,所以必然會比靜態圖集多了圖集生成的成本,當然這也是可以優化的。

2、并且在目前的動態圖集生成方案中,還沒有出現公開的支持壓縮的動態圖集解決方案。

3、還有一點,靜態圖集由于圖片在生成過程中是確定的,可以將分配算法做得很好,圖集的利用率也能做到很高。動態圖集由于圖片是動態生成的,在游戲運行過程中也會動態的增減圖片,類似操作系統的內存分配算法,圖集必然會出現碎片,圖集的利用率也不可能做得很高

總之, 如果能把以上五個方面都做到了,那么UI的優化就不成問題。當然有的項目不需要都做到,做到其中幾部分就可以了。也有的項目需要做的比 上面的還多。這都得具體問題具體分析,如果游戲中3D場景,人物,特效部分優化做的好,那么UI的壓力就小點,如果3D部分優化的不好,那么UI的壓力就大點,需要優化的東西就多些。

文章“【Unity基礎知識】大型游戲中UI優化原則匯總(下)”已幫助

>>本文地址:http://www.028benet.com/zhuanye/2020/51130.html

THE END  

聲明:本站稿件版權均屬中公教育優就業所有,未經許可不得擅自轉載。

1 您的年齡

2 您的學歷

3 您更想做哪個方向的工作?

獲取測試結果
  • 大前端大前端
  • 大數據大數據
  • 互聯網營銷互聯網營銷
  • JavaJava
  • Linux云計算Linux
  • Python+人工智能Python
  • 嵌入式物聯網嵌入式
  • 全域電商運營全域電商運營
  • 軟件測試軟件測試
  • 室內設計室內設計
  • 平面設計平面設計
  • 電商設計電商設計
  • 網頁設計網頁設計
  • 全鏈路UI/UE設計UI設計
  • VR/AR游戲開發VR/AR
  • 網絡安全網絡安全
  • 新媒體與短視頻運營新媒體
  • 直播帶貨直播帶貨
  • 智能機器人軟件開發智能機器人
 

快速通道fast track

近期開班時間TIME

主站蜘蛛池模板: 欧美大香线蕉线伊人久久| 91精选在线观看| 美女被免费喷白浆视频| 无码日韩AV一区二区三区| 国产午夜精品福利| 久久精品中文字幕无码| 黄色片视频国产| 日韩亚洲综合精品国产| 国产在视频线精品视频| 久久我们这里只有精品国产4| 黄网站色视频免费观看45分钟 | 欧美日韩一区二区三区四区在线观看 | a级毛片免费网站| 热re久久精品国产99热| 国产高清在线免费视频| 亚洲国产精品福利片在线观看| 两个人看的www免费| 果冻传媒李琼母亲| 国产天堂在线观看| 久久久综合九色合综国产| 翁熄止痒婉艳隔壁老李头| 岛国免费在线观看| 免费在线看污网站| 91麻豆精品福利在线观看| 欧美另类老少配hd| 国产成人亚洲毛片| 中文织田真子中文字幕| 精品国产三级v| 在线视频国产99| 亚洲av综合色区无码专区桃色| 高清一本之道加勒比在线| 无码福利一区二区三区| 全免费毛片在线播放| 97色精品视频在线观看| 欧洲熟妇色xxxx欧美老妇多毛网站| 国产女人喷潮视频在线观看| 中文无码日韩欧免费视频| 男人天堂视频网| 国产精品9999久久久久仙踪林 | 男人操女人免费| 国产精品成人一区无码|