Unity 将Sprite打包进图集
前言:
打包圖集是一個(gè)很簡(jiǎn)單的過程,但是如果沒有這樣的經(jīng)驗(yàn),可能不知道如何下手
本博客大概說一下打包流程,以及一些基本原理
1、為什么要打包圖集
首先要了解一點(diǎn),在UGUI中即使你什么都不干,在項(xiàng)目打包時(shí),Unity也會(huì)自動(dòng)將你的一些小圖片資源合在一張大圖里面,也就是合成一張圖集,但是這種默認(rèn)的方式,會(huì)產(chǎn)生大量的Draw Call,對(duì)于性能消耗比較大
而NGUI則是開發(fā)者必須要將圖片資源打包成圖集,然后才能使用這些圖片資源
因此無(wú)論是UGUI還是NGUI,掌握?qǐng)D集的打包都是非常重要的
2、打包開始前
在合成圖集開始前,先了解一下Sprite
首先,在Unity中,Sprite的生成是由Texture2D加一個(gè)軸點(diǎn)以及一個(gè)矩形來(lái)構(gòu)成的,這就是Sprite為什么作為2D場(chǎng)景元素存在的原因,有一個(gè)軸點(diǎn)可以作為坐標(biāo)軸點(diǎn),而其矩形可以用來(lái)生成網(wǎng)格,處理碰撞體這些東西:
點(diǎn)擊任一一張Sprite,可以在Inspect面板看到下面這些信息
通過圖中可以看出有下面的屬性:
- Texture Type:這個(gè)圖片的類型,和你需要的功能有關(guān)
- Sprite Mode:精靈模式是單一還是一張圖集
- Pixels Per Unit:單位距離內(nèi)的像素點(diǎn),一般默認(rèn)100是有些大的,可以通過修改該參數(shù)來(lái)改變?cè)谑澜鐑?nèi)的大小
- Mesh Type:網(wǎng)格類型,一般不需要調(diào)整
- Extrude Edges:選擇此值以基于像素阿爾法值生成網(wǎng)格。Unity 生成的網(wǎng)格通常遵循Sprite的形狀
- Pivot:用來(lái)確定生成錨點(diǎn)位置
3、圖集打包流程
第一種方式:
注意:
- 根據(jù)官方文檔描述,該方式在 Unity 2020.1 及更高版本中已棄用,并且將不再作為Sprite Packer 模式的選項(xiàng)提供
在Project Setting中找到Editor,然后在其中的Sprite Packer選擇Always Enabled(Legacy Sprite pakcer):
接下來(lái)就可以點(diǎn)擊需要合成圖集的Sprite,會(huì)發(fā)現(xiàn)多出一個(gè)Packing Tag,我們可以在后面的輸入框內(nèi)輸入一個(gè)名字,這個(gè)名字代表的是一類圖片,這個(gè)名字相同的所有圖片會(huì)被打包進(jìn)入一張圖集
在這里,我把三個(gè)Sprite命名為Test
完成上面的設(shè)置后,我們可以點(diǎn)擊導(dǎo)航欄的Windows,在其中找到2D,然后選擇Sprite Packer后點(diǎn)擊Pack開始打包,等待打包程序執(zhí)行完成后,就可以在這個(gè)面板中查看到Sprite合成圖集后的效果:
注意:
- 如果你完成上述步驟,沒有發(fā)現(xiàn)合并的圖集,可以點(diǎn)擊Pack進(jìn)行更新,這樣就可以看到剛剛添加的圖片
第二種方式
通過在Project面板右鍵選擇Create然后在二級(jí)菜單中選擇Sprite Atlas創(chuàng)建一個(gè)圖集:
然后點(diǎn)擊圖集就可以在Inspect面板添加需要打包進(jìn)圖集的Sprite:
通過這樣的方式打包圖集,相比于第一種,可以控制打包后的圖集的大小、壓縮方式等等,有比較強(qiáng)的定制性。
4、為何打包圖集可以提升性能表現(xiàn)
1,批處理
要了解這樣的原因,首先需要理解Draw Call與Batches的概念,
關(guān)于Draw Call與Batche
- Draw Call的知識(shí)可以查看之前的文章:Unity 渲染流水線:CPU與GPU合作創(chuàng)造的藝術(shù)
- 關(guān)于Batches(批處理),即使你不了解,通過名字也可以理解,這是一種通過成批來(lái)處理的技術(shù),總的來(lái)說,這個(gè)數(shù)值越小,對(duì)于硬件設(shè)備性能越友好
如果沒有打包成為圖集,如果場(chǎng)景中有三個(gè)Sprite,會(huì)產(chǎn)生三個(gè)Batches,如圖,場(chǎng)景中有三個(gè)沒有經(jīng)過圖集處理的Sprite,運(yùn)行場(chǎng)景,發(fā)現(xiàn)產(chǎn)生了5個(gè)Batches(天空盒占一個(gè),另外一個(gè)相機(jī)處理產(chǎn)生):
接下來(lái)將三個(gè)Sprite打包進(jìn)一個(gè)圖集,可以很明顯的發(fā)現(xiàn),只產(chǎn)生了一個(gè)Batches,三個(gè)Sprite是通過一個(gè)批次提交的Draw Call,這樣就可以減少Draw Call,提升性能表現(xiàn):
2,方便圖集的壓縮
對(duì)于圖集打包的另一特點(diǎn)就是圖片資源的壓縮,在Unity中,只能壓縮圖片大小為2的次方的圖片,這就代表著不規(guī)則的圖片不能被壓縮。
而通過圖集這樣的方式,可以很方便的將一組不規(guī)則的圖片合成一張規(guī)則的圖集,這樣就可以進(jìn)行相應(yīng)的壓縮操作。
總結(jié)
以上是生活随笔為你收集整理的Unity 将Sprite打包进图集的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【防火墙接口启用DHCP】
- 下一篇: dhcp显示否服务器怎么设置,怎么开启