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