中字幕视频在线永久在线,最新免费av在线观看,最近免费mv在线观看,亚洲乱码一区av春药高潮,专区,国产激情毛片,国产成人

IT培訓-高端面授IT培訓機構(gòu)
云和教育:云和數(shù)據(jù)集團高端IT職業(yè)教育品牌
  • 國家級
    全民數(shù)字素養(yǎng)與技能培訓基地
  • 河南省
    第一批產(chǎn)教融合型企業(yè)建設(shè)培育單位
  • 鄭州市
    數(shù)字技能人才(碼農(nóng))培養(yǎng)評價聯(lián)盟

Unity內(nèi)存優(yōu)化培訓之圖集優(yōu)化

  • 發(fā)布時間:
    2018-03-15
  • 版權(quán)所有:
    云和教育
  • 分享:

Unity內(nèi)存優(yōu)化培訓之圖集優(yōu)化:在游戲開發(fā)的過程中,我們難免會遇到某個UI界面加載卡頓,或者安裝包太大的問題,那么今天我們就來講一下如何優(yōu)化NGUI的圖集,降低內(nèi)存,降低游戲的安裝包大小。

首先我們選擇一些小圖片,使用我們平常的方式來打一張1024X1024大小的圖集,如下圖:

Unity內(nèi)存優(yōu)化培訓之圖集優(yōu)化

圖片的格式設(shè)置如上圖紅色箭頭指示,最后一個箭頭顯示了在ARGB32位的格式下圖片的大小為4MB,接下來我們在看看游戲運行的時候這張圖片占的內(nèi)存空間,我們先在場景中隨便創(chuàng)建一個Sprite,如下圖:

Unity內(nèi)存優(yōu)化培訓之圖集優(yōu)化

接下來,點擊菜單“Window—->Profiler”打開性能監(jiān)控窗口,點擊左側(cè)“Memory”,運行游戲,如下圖:

Unity內(nèi)存優(yōu)化培訓之圖集優(yōu)化

根據(jù)上面的這幅圖片,大家可以發(fā)現(xiàn)這個圖集的貼圖占的內(nèi)存空間為8MB,如果我們在游戲中需要加載一個界面,這個界面中包含多個圖集的話,有可能會造成卡頓,所以我們要想辦法在保證圖片質(zhì)量的前提下,降低圖片內(nèi)存,經(jīng)過前面很多項目的采坑,最終發(fā)現(xiàn)在安卓手機上使用ETC 4格式壓縮圖片是最佳選擇。

Unity內(nèi)存優(yōu)化培訓之圖集優(yōu)化

但是ETC4是不支持Alpha通道的,那么我們就要考慮一下有沒有其他手段來解決這個問題。

對于這個問題,現(xiàn)在用的比較多的方法就是Alpha通道剝離。原理就是使用代碼把原圖片的RGBA四個通道的數(shù)值讀取出來,然后把RGB值和Alpha值分別存在不同的兩張圖片中,最后再用Shader對這兩張圖片分別進行采樣,讀取里面的RGB值和另一張圖片的Alpha值,進行合并,輸出顏色。

下面就來實際操作一下。首先介紹一個工具,可以把原圖片剝離為一張帶有RGB通道的圖片和一張帶有Alpha通道的圖片,下面,no code no bi bi,直接上代碼:(PS:代碼關(guān)鍵部分已經(jīng)注釋)

Unity內(nèi)存優(yōu)化培訓之圖集優(yōu)化

這個是剝離工具,代碼寫好保存完畢之后放入“Editor”目錄下,然后點擊菜單欄“Tools—->Texture—–>AlphaPeel”,點擊之前一定要選中圖片,并且保證圖片的可讀寫開關(guān)處于開啟狀態(tài)。如圖:

Unity內(nèi)存優(yōu)化培訓之圖集優(yōu)化

執(zhí)行過之后大家會發(fā)現(xiàn)原來的圖片路徑中多出了兩張圖片,如圖:

Unity內(nèi)存優(yōu)化培訓之圖集優(yōu)化

圖中MainAtlas是原圖片,下面的兩張圖就是我們剛才輸出的,接下來我們需要修改一個NGUI自帶的Shader代碼,把這兩張圖片合并起來。大家可以看一下上圖中第一個資源,是我們在創(chuàng)建圖集的時候自動生成的材質(zhì),我們選中這個材質(zhì),看一下它用的是哪個Shader,如圖:

Unity內(nèi)存優(yōu)化培訓之圖集優(yōu)化

在圖中我們可以看到該材質(zhì)用的是名字為“Transparent Colored”的Shader,NGUI的所有圖集的材質(zhì)用的都是這個Shader,并且我們可以看到剛才我們創(chuàng)建的圖集貼圖也賦在這個材質(zhì)上,所以我們要修改這個Shader把我們剛才創(chuàng)建的兩張圖片重新合并。下面在Unity資源搜索欄里輸入Shader名稱,打開搜到的第一個Shader,然后我們把這個Shader改成如下圖所示:

Unity內(nèi)存優(yōu)化培訓之圖集優(yōu)化
Unity內(nèi)存優(yōu)化培訓之圖集優(yōu)化

代碼修改部分已經(jīng)注釋,78行以后的代碼不用修改。修改后保存,接下來就讓我們見證奇跡吧!

回到Unity檢視面板,會發(fā)現(xiàn)材質(zhì)那里讓我們放進去兩張圖片,如圖:

Unity內(nèi)存優(yōu)化培訓之圖集優(yōu)化

我們把剛才生成的RGB圖片和Alpha圖片分別拖入第一個圖片位置和第二個圖片位置,如圖:

Unity內(nèi)存優(yōu)化培訓之圖集優(yōu)化

下面我們再確定一下剛才生成的兩張圖片的格式設(shè)置:

Unity內(nèi)存優(yōu)化培訓之圖集優(yōu)化

兩張圖片都要按照上面的格式去設(shè)置,設(shè)置完成之后大家可以看一下最下面那個箭頭顯示的圖片大小,0.5M,這樣兩張圖片合起來是1M比原來小了3/4,驚不驚喜,意不意外!

下面我們來看一下實際效果:

Unity內(nèi)存優(yōu)化培訓之圖集優(yōu)化

圖片的清晰度幾乎和剛開始的時候一樣,接下來我們看一下Profiler里面的數(shù)值:

Unity內(nèi)存優(yōu)化培訓之圖集優(yōu)化

兩張圖片占的內(nèi)存分別為1MB兩個加起來為2MB,原來是8MB現(xiàn)在是2MB減少3/4。

在實際開發(fā)中大小圖集有幾十個,使用這種方式可以讓我們的安裝包大小減少100MB左右,效果還是比較顯著的,并且也可以減少運行內(nèi)存的壓力,另外Unity中所有圖片資源都可以使用這種方式來優(yōu)化。以上就是Unity內(nèi)存優(yōu)化培訓之圖集優(yōu)化的全部內(nèi)容,希望可以給大家?guī)硪恍﹩l(fā)。