Unity2017新功能Sprite Atlas詳解


Sprite Atlas(精靈圖集)
Sprite Atlas 針對現有的圖集打包系統Sprite Packer在性能和易用性上的不足,進行了全面改善。除此之外,相比Sprite Packer,Sprite Atlas將對精靈更多的控制權交還給用戶。由用戶來掌控圖集的打包過程以及加載時機,更加利於對系統性能的控制。
Sprite Atlas的主要有以下三個功能:
1.創建、編輯圖集以及設定圖集參數

2.添加圖集Variant(變種)

3.運行時訪問圖集

下面將通過具體案例來分別展示以上三個功能。

創建、編輯圖集及參數設定
在Unity 2017.1中,SpriteAtlas是一種資源,可以像其它資源一樣在Unity中創建,例如預制件、場景等。

可以在檢視窗口中設定要打包的精靈及其參數,例如圖集的打包方式、輸出貼圖的壓縮格式等。如下圖所示,SpriteAtlas就是一個創建好的圖集。

P.S.這里可以支持多種類型,包括單個Sprite、Sliced Sprite、文件夾,以及這些類型的任意組合。

操作更加方便,對用戶更友好。可以將文件夾,紋理或精靈分配給Sprite Atlas。可以將整個文件夾分配給Sprite Atlas資產,該文件夾中的所有紋理(包括子文件夾)都將被打包。不考慮相同紋理內的其他精靈。

此外,在檢視窗口上還可以看到圖集的一些參數設定,例如:打包時是否支持精靈旋轉(Allow Rotation)、貼圖的采樣模式(Filter Mode)、壓縮方式(Compression)等等。
在最下方的預覽窗口中,可以查看圖集的生成效果。這樣就可以很清楚的知道圖集的打包方式是否合理,是否存在大量被浪費的空間。

添加圖集Variant(變種)
所謂Variant,就是指原有圖集的一個變種。它會復制原有圖集的貼圖,並根據一個比例系數來調整復制貼圖的大小。

這樣的Variant通常用於為高分辨率和低分辨率的屏幕准備不同的圖集。

因為如果只准備一套高分辨率的圖集,在低分辨率的設備上占用內存過多。反之,如果只准備一套低分辨率圖集,在高分辨率的設備上就會模糊。

通過Atlas Variant就可以很方便地解決該問題。如下圖所示,SpriteAtlas 1.spriteatlas是新建的一個低清圖集,在檢視窗口中將Type設為Variant,Master Atlas設為SpriteAtlas。這里為了與原圖進行更明顯的對比,將Scale設為0.1, 點擊Pack Preview。

運行時訪問圖集
Sprite Atlas作為一種資源開放給用戶,支持在腳本中直接訪問,還可以通過名字獲取圖集中的精靈

這樣做的好處是,讓用戶可以更加直接地隨時編輯圖集,而且不用去單獨加載圖集中的每個精靈。

下面是一段動態換裝的代碼,該腳本通過LoadAsset加載SpriteAtlas類型的資源,再通過SpriteAtlas的GetSprite接口獲取圖集中的精靈,最后將精靈傳遞給SpriteRenderer。相較於基於Sprite Packer的實現,整個過程要簡單直接的多。

 

  1.  
    using UnityEditor;
  2.  
    using UnityEngine;
  3.  
    using UnityEngine.U2D;
  4.  
     
  5.  
    public class SpriteAtlasExample : MonoBehaviour
  6.  
    {
  7.  
    void Start()
  8.  
    {
  9.  
    SpriteAtlas atlas = AssetDatabase.LoadAssetAtPath<SpriteAtlas>( "Assets/SpriteAtlas/SpriteAtlas.spriteatlas");
  10.  
    Sprite sprite = atlas.GetSprite( "111");
  11.  
    if(sprite != null)
  12.  
    {
  13.  
    GetComponent<SpriteRenderer>().sprite = sprite;
  14.  
    }
  15.  
    }
  16.  
     
  17.  
    }

創建方式
Assets>Create>Sprite Atlas


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM