Unity3D - 圖片資源導入的一些基礎知識

版權聲明:本文爲博主原創文章,轉載請註明出處。 https://blog.csdn.net/xmousez/article/details/53894571

在上一篇文章裏 Unity3D - 你導入的資源,並不是Unity使用的資源 介紹過,Unity使用的資源是你無法直接操作的,那麼對於圖片資源,我們應該如何去處理和優化工作流程呢?

圖片資源的分類

在Unity中,圖片一般可以分爲兩種:貼圖(Texture)和精靈(Sprite)。我們可以簡單的理解爲3D(模型使用的)圖片和2D(UI使用的)圖片。在可以直接選擇Texture Type去更改你的導入方式。

  • Texture
    • Texture一般作爲3D模型上的貼圖,需要有對應的材質球並關聯到相應3D網格模型去使用。一般來說Texture會是一個長寬像素都是2的n次方的正方形,這也是大部分建模軟件(如maya)規定的POT(Power Of Tow)。
    • 不過並不是說非POT圖片就不能使用,只是在Unity的壓縮上會很吃虧,而且你導入後Unity仍然會以POT方式去生成對應的圖片。
    • POT實際上可以是長方形,只要長寬都是POT就可以,但是大部分建模軟件上都會使用正方形。
  • Sprite
    • Sprite一般作爲UI上的圖片,一般不會去製作對應的材質球。在UGUI上一般是拖動到相應的控件上就可以了。
    • Sprite是一個資源導入的方式,一個資源導入後並非只能是單個Sprite,在Sprite Mode選項上可以選擇Multiple去生成多個Sprite,不過需要在Sprite Editor選項上對圖片進行切割,通常需要美術參與。
    • Sprite一般對大小不會做限制,UI需要多大就用多大,但是Unity在壓縮上,對4的倍數分辨率的圖片支持上會更好一點(應該是方便圖片在POT下的位置計算),所以在製作時可以對PS的畫布大小進行適當調整。
    • Sprite在導入設置完成後建議使用 Sprite Packer 進行打包,如果你確定不打包。。。那麼建議你做成POT。。。
    • 在使用 Sprite Packer 打包圖集後你會發現,Unity生成的圖片都是POT的。

MiniMap

圖片資源在導入爲Sprite後,我們可以看到一個MiniMap選項,該選項是生成該圖片的低分辨圖片(1/2,1/4,1/8。。。),這些小圖會使生成的資源文件變大1/3,但是在3D渲染時Unity會根據物體顯示的大小(或者距離?)自動選擇不同的分辨率以提高渲染效率。
一般來說,Sprite不會有這種需求,所以關閉這個選項可以減少包體的大小。

而對於Texture,同樣可以取消。Texture和Sprite實際上只是Unity的兩種預設,當你在Texture Mode上選擇Advance時,你會有很完全的導入選項。如果你確定你的3D物體不會有很多的遠近變化時,選擇Advance,取消MiniMap會是一個很正確的選擇。而對於一般的3D物體,MiniMap帶來的效率提高是值得你和用戶去花費這點儲存空間的。

資源的源文件格式

既然Unity可以使用PSD,那麼你何必讓美術去導出png呢?
PSD在導入速度上不比png和jpg慢(理論上應該會快,沒測試),不過文件大小確實會變大。但是如果直接使用PSD,並要求美術直接在項目目錄裏進行資源管理和維護,實際上是在團隊流程中省出了所有不必要的壓縮格式文件(再次強調,導入資源使用的文件大小並不會影響最終的包體大小 )。
當然如果經常出現美術破壞項目目錄結構的情況(上傳非必要文件,命名不規範等),還是把文件發給程序比較好,而這種情況使用psd還是png那就見仁見智了,psd沒有預覽還是很難受的。(一般程序猿學PSD的基本操作比美術學SVN或者Unity都要快的多)

Sprite Packer + AssetBundle的注意事項

當你在使用AssetBundle時,你的Sprite引用實際上是Sprite Packer生成的圖集的引用。所以在AssetBundle上,即便你只使用到一個圖集中的一個小像素,Unity也會將該圖集完整地打入AssetBundle中。所以Sprite儘量在Bundle的分包基礎上去分圖集。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章