Unity UI Sprite
- UI資源導入詳解
- 圖片導入項目
- Texture Type
- Texture Shape
- Advanced Setting 高級設置
- 圖片設置案例
- 常見細節問題
- 知識點詳解來源
UI資源導入詳解
Unity中的UI資源有圖片、矢量圖、字體、預制體、圖集、動畫等等資源。
這其中圖片是最重要以及最基礎的資源組成,所以圖片的資源管理是影響整個項目的重點。
圖片導入項目
直接拖拽到項目的對應文件夾中,文件夾需要進行分配分類好,建議按照功能頁面進行分文件夾,方便后期打圖集。
導入后的配置
Texture Type
-
圖片導入后的默認參數Default:
通用的紋理類型,一般在Material上的材質圖片參數使用,比如漫反射、法線貼圖這些。
-
Normal Map 法線貼圖參數
專職用于法線貼圖的格式,用于存儲法線信息,模擬凹凸表面光照效果。
使用在3D模型的專業法線貼圖。有Unity提供的Api開關(勾選Creat From Grayscale)生成法線。
-
Editor GUI and Legacy GUI (編輯器 GUI 和舊版 GUI)
如果要在任何 HUD 或 GUI 控件上使用紋理,請選擇 Editor GUI and Legacy GUI。 -
Cursor (光標)
選擇 Cursor 可將紋理用作自定義光標。 -
Cookie (光照遮罩(餅干))
用于燈光(如聚光燈)的投影遮罩紋理。
?? 適用場景??:模擬燈光透過窗戶、樹葉等效果。 -
LightMap (光照貼圖)
存儲預計算的光照信息。
?? 適用場景??:靜態場景的烘焙光照。
此選項允許將紋理編碼為特定格式(RGBM 或 dLDR,具體取決于平臺)并通過后期處理步驟對紋理數據進行處理(推拉式擴張通道)。 -
Directional LightMap (方向光照貼圖)
方向 -
ShadowMask (陰影遮罩)
混合光照使用貼圖。 -
Single Channel (單通道)
僅使用單通道(如R通道)存儲數據。
??適用場景??:
高度圖(Heightmap)。
遮罩紋理(如R通道控制金屬度)。
Texture Shape
使用texture shape 可以選擇和定義紋理的形狀和結構。
- 2D 是用于所有紋理的最常用設置;它將圖像文件定義為 2D 紋理。這些設置用于將紋理映射到 3D 網格和 GUI 元素以及其他項目元素。
- Cube 將紋理定義為立方體貼圖。例如,可將其用于天空盒或反射探針。此類型僅可用于 Default、Normal Map 和 Single Channel 紋理類型。
- 2D Array 將紋理定義為 2D 數組紋理。這通常用作某些渲染技術的優化,其中會使用許多具有相同大小和格式的紋理。
- 3D 將紋理定義為 3D 紋理。某些渲染技術使用 3D 紋理表示體積數據。
Advanced Setting 高級設置
根據不同texture type有不同的Advanced setting.
這里說一些常用的設置:
-
sRGB(Color texture)
控制是否將紋理視為顏色空間數據(sRGB)。
??開啟:
顏色紋理(如漫反射貼圖、UI圖片)。
??關閉??:
非顏色數據(如法線貼圖、金屬度貼圖)。
啟用此屬性可指定將紋理存儲在伽馬空間中。對于非 HDR 顏色紋理(例如反照率和鏡面反射顏色),應始終選中此復選框。如果紋理存儲了有特定含義的信息,并且您需要著色器中的確切值(例如,平滑度或金屬度),請禁用此屬性。默認情況下會啟用此屬性。 -
Alpha Source (透明度來源)
定義透明通道a的來源。None:無透明通道。無論輸入紋理是否有 Alpha 通道,導入的紋理都沒有 Alpha 通道。 Input Texture Alpha:使用原始圖片的Alpha通道。如果提供了紋理,則使用輸入紋理中的 Alpha。 From Gray Scale:根據灰度圖生成Alpha通道。從輸入紋理 RGB 值的平均值生成 Alpha。
指定如何生成紋理的 Alpha 通道。
-
Alpha Is Transparency (透明通道是否透明)
??用途??:將Alpha通道作為透明蒙版處理。
??開啟??:
帶透明度的UI圖片或精靈。
??關閉??:
不需要透明度的貼圖(如法線貼圖)
如果指定的 Alpha 通道為透明度 (Transparency),則啟用此屬性可擴充顏色并避免邊緣上的過濾瑕疵。 -
Non-Power of 2(非2次冪尺寸)?
處理非2次冪(如513x513)的紋理
None:保持原尺寸,可能導致性能問題。ToNearest:縮放到最近的2次冪(如512x512)。??適用場景??:移動端或低性能平臺建議使用2次冪紋理。
-
Generate Mip Maps(生成Mip Maps)?
為紋理生成多級漸遠紋理鏈,優化遠距離顯示效果。
??開啟:
3D場景中的遠距離物體貼圖。
??關閉??:
UI或2D精靈(避免模糊)。
法線貼圖(可能破壞法線數據) -
Wrap Mode(循環模式)?
控制紋理在UV超出[0,1]范圍時的顯示方式。
??選項??:
Repeat:平鋪重復。
Clamp:邊緣像素拉伸。
??適用場景??:
Repeat:地面、天空盒貼圖。
Clamp:UI背景或角色貼圖。 -
Filter Mode(過濾模式)?
控制紋理縮放時的平滑處理方式。
??選項??:
Point (no filter):點,無濾鏡,像素化風格(適合像素游戲)。
Bilinear:線性插值(中等平滑)。
Trilinear:結合Mip Maps的平滑(最平滑)。
??適用場景??:
Point:像素藝術或需要銳利邊緣的UI。
Bilinear/Trilinear:3D模型貼圖或平滑漸變的UI。 -
Compression(壓縮格式)?
優化紋理內存占用和加載速度。
??None??:無壓縮(最高質量,最大內存)。??Low/High Quality??:通用壓縮(平衡質量與性能)。??ASTC??(移動端):高效壓縮(如ASTC 6x6)。??DXT/BCn??(PC/主機):DirectX壓縮格式(如DXT5支持Alpha)。??ETC/ETC2??(Android兼容格式)。??適用場景??:移動端優先選擇ASTC或ETC2。PC端選擇DXT5(帶Alpha)或BC7(高質量)。
- Read/Write (讀寫)
Read/Write Enable(是否啟用讀寫) 開啟讀寫可以訪問Texture2D.SetPixels, Texture2D.GetPixels和其他Texture2D方法。開啟會使Texture所需內存量增加一倍。因此默認情況下禁用此屬性,并且僅在需要腳本訪問權限時才啟用它。
圖片設置案例
-
UI按鈕圖片??
??Texture Type??:Sprite (2D and UI)
??Sprite Mode??:Single
??Pixels Per Unit??:100(與Canvas Scaler一致)
??sRGB??:開啟
??Generate Mip Maps??:關閉
??Compression??:ASTC 6x6(移動端)或DXT5(PC)
??Filter Mode??:Bilinear -
3D模型法線貼圖??
??Texture Type??:Normal map
??sRGB??:關閉
??Create from Grayscale??:開啟(根據高度圖生成法線)
??Compression??:BC5(PC)或ASTC 6x6(移動端)
??Generate Mip Maps??:開啟
??Wrap Mode??:Repeat
?? -
像素藝術角色??
??Texture Type??:Sprite (2D and UI)
??Filter Mode??:Point (no filter)
??Compression??:None(避免壓縮導致像素模糊)
??Non-Power of 2??:ToNearest(確保紋理尺寸為2次冪)
常見細節問題
- ??圖片模糊??:
檢查Filter Mode是否為Bilinear(關閉Mip Maps)。
確保Pixels Per Unit與Canvas Scaler的Reference Resolution匹配。 - ??透明邊緣黑邊??:
開啟Alpha Is Transparency,并檢查原始圖片的Alpha通道是否干凈。 - ??內存占用過高??:
使用合適的壓縮格式(如ASTC/DXT5)。
關閉不必要的Mip Maps。
知識點詳解來源
- 紋理類型: 紋理類型
- 光照模式的定向貼圖: Directional Lightmap :Directional Lightmap
- 混合光照概念:Shadowmask
- 混合光照詳解
- 編輯器 GUI 和 舊版GUI
- Texture Import Settings - texture shape
- 部分補充設置