首先要知道我們?yōu)槭裁匆獙⒁粋€(gè)個(gè)精靈打包成圖集呢?打包圖集有什么好處呢?
?Unity3D圖集打包,也稱為紋理圖集打包或精靈圖集打包,是一種將多個(gè)小紋理合并成一個(gè)大紋理的過(guò)程。
??????? 優(yōu)點(diǎn):?????????????? ?
??????????????? a.減少渲染調(diào)用次數(shù)、b.減少內(nèi)存開(kāi)銷、c.提高游戲性能、d.提升載入速度、e.提升載入速度減小包體,合成的大圖會(huì)比之前所有的散圖所占用的物理存儲(chǔ)更小
??????? 概念:
??????????????? 圖集打包是將游戲中使用到的小紋理(如角色、背景、道具等)合并成一個(gè)大紋理的過(guò)程。這樣做的好處是減少了渲染調(diào)用次數(shù)和紋理切換次數(shù),提高了渲染性能和內(nèi)存利用效率。
??????? 圖集打包優(yōu)化原理:
??? 減少批次調(diào)用:游戲引擎在繪制物體時(shí),會(huì)根據(jù)紋理進(jìn)行批次調(diào)用。如果每個(gè)物體都使用不同的紋理,那么就會(huì)產(chǎn)生大量的批次調(diào)用,導(dǎo)致性能下降。而通過(guò)圖集打包,可以將多個(gè)小紋理合并成一個(gè)大紋理,減少批次調(diào)用次數(shù),提高性能。
??? 減少紋理切換:紋理切換是指從一個(gè)紋理切換到另一個(gè)紋理的過(guò)程。紋理切換會(huì)導(dǎo)致GPU狀態(tài)的切換,影響渲染性能。通過(guò)圖集打包,可以將多個(gè)小紋理合并成一個(gè)大紋理,減少紋理切換次數(shù),提高性能。
??? 內(nèi)存利用效率:每張紋理都需要占用一定的內(nèi)存空間,而通過(guò)圖集打包,可以將多個(gè)小紋理合并到一個(gè)大紋理中,節(jié)約了內(nèi)存空間。此外,圖集打包還可以使用壓縮算法對(duì)紋理進(jìn)行壓縮,減少內(nèi)存占用。
??? UV優(yōu)化:在進(jìn)行圖集打包時(shí),需要調(diào)整小紋理的UV坐標(biāo)。通過(guò)優(yōu)化UV坐標(biāo),可以避免紋理重復(fù)采樣,從而提高渲染性能。
???? 打包后的圖集不管代碼動(dòng)態(tài)使用的次數(shù)多少,它都不會(huì)因?yàn)殇秩驹俅螐?fù)制渲染而浪費(fèi)內(nèi)存,這樣它在內(nèi)存中始終只有一份。同時(shí)大大減少繪制調(diào)用的次數(shù),從而減少DrawCall的開(kāi)銷;
DrawCall(繪制調(diào)用):在計(jì)算機(jī)圖形學(xué)中,指向圖形處理器發(fā)送指令以繪制圖形的過(guò)程。
使用圖集有這么多優(yōu)點(diǎn),那么它有沒(méi)有缺點(diǎn)呢?
當(dāng)然有,使用圖集首先得將各小紋理(精靈)先打包好圖集。然后再將其加載進(jìn)來(lái),才能使用圖集中的各各小精靈。那么打包圖集unity又能用什么工具打包呢?
一,第三方工具:
TexturePacker圖集打包工具
TexturePacker圖集工具下載地址:
? ? ? ??TexturePacker - Create Sprite Sheets for your game! (codeandweb.com)
這款工具它支持多個(gè)平臺(tái),安裝很簡(jiǎn)單就不介紹了。
我們來(lái)了解一下TexturePacker工具的具體使用流程
在游戲開(kāi)發(fā)過(guò)程中,圖片的使用是必不可少的,尤其是在UI部分,往往會(huì)使用大量的圖片。如果每一張圖片都是單獨(dú)使用的話,實(shí)際上會(huì)對(duì)性能造成很大的損耗的。這時(shí)候我們往往是把需要的圖片資源進(jìn)行分類,然后按照需要打包成對(duì)應(yīng)的圖集。這樣會(huì)方便管理和更新迭代,同時(shí)也減少了很多的性能開(kāi)銷。
??????? 就比如說(shuō)假如你一個(gè)UI界面使用了10張不同的圖片,那么加載這個(gè)界面的時(shí)候,就會(huì)同時(shí)對(duì)10個(gè)圖片資源進(jìn)行渲染,而如果這10張圖片是在同一個(gè)圖集里面的話,那么就相當(dāng)于同時(shí)只進(jìn)行了1張相對(duì)較大的圖片的渲染,這樣實(shí)時(shí)渲染的性能開(kāi)銷會(huì)更少,這是一種用空間換時(shí)間的一種辦法。
??????? 大家在學(xué)習(xí)過(guò)程中有可能見(jiàn)過(guò)類似這樣的一張圖片(下圖),這其實(shí)就是打包圖集后圖片,接下來(lái)我將教大家如何使用TexturePacker工具制作這樣圖片,并用在Unity3D中。
導(dǎo)入紋理
????????打開(kāi)TexturePacker軟件,點(diǎn)擊菜單欄的"文件",選擇"新建項(xiàng)目"或者"添加精靈"來(lái)導(dǎo)入紋理文件。你可以一次性導(dǎo)入多個(gè)紋理文件、(當(dāng)然也可以直接拖拽對(duì)應(yīng)精靈資源文件夾到軟件中)
此工具已有博主詳細(xì)說(shuō)明了。我們可以點(diǎn)擊下面的鏈接查看詳細(xì)內(nèi)容,再次就部做過(guò)多的介紹了,本文主要介紹unity內(nèi)置的圖集打包工具和使用方法;
??? TexturePacker圖集打包工具在Unity3D中的介紹以及使用流程-CSDN博客ee ?
二,Unity內(nèi)自帶的圖集打包工具:
很簡(jiǎn)單首先先導(dǎo)入2dSprite工具
然后再設(shè)置sprite Packer-->Meod
鼠標(biāo)在Preject欄中點(diǎn)擊右鍵彈出Create-->2D-->spriteAtlas生成圖集文件
以后將要?jiǎng)?chuàng)建圖集的精靈文件夾指定到ObjectsOfr Packing的列表中;
以后點(diǎn)擊packPreview生成即可;
文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-858529.html
代碼的大致調(diào)用方法文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-858529.html
到了這里,關(guān)于Unity中圖集打包的全過(guò)程的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!