假設有一張png/tga圖集,導入到Unity,放置目錄"Assets/Resources/UI"(UI文件夾可替換成其他的,重要的是要在"Assets/Resources/"路徑下),默認為如下設置:
為了可以使用Unity自帶的精靈切割,要將紋理類型改成"Sprite","Sprite Mode"改成"Multiple","Format"改成"Truecolor",點擊"Apply"按鈕進行應用。
接着,點擊"Sprite Editor"打開精靈編輯器,點擊左上角的"Slice"按鈕,彈出切片設置,再次點擊里面的"Slice"按鈕,就會自動對圖片進行切割,如下圖所示:
在對切割不完整的地方進行修正后,點擊右上角的"Apply"按鈕,進行保存。可以看到Project視圖下這個圖集,已經被分割出許多小圖了,如下圖所示:
接下來,因為要對圖片進行讀寫操作,要更改圖片的屬性才能進行,否則會提示如下:
- UnityException: Texture 'testUI' is not readable, the texture memory can not be accessed from scripts. You can make the texture readable in the Texture Import Settings.
將圖片紋理類型更改為"
Advanced",將"Read/Write Enabled"屬性進行打勾,如下圖所示:

創建一個腳本文件,代碼如下:
using UnityEngine; using UnityEditor; public class TestSaveSprite { [MenuItem("Tools/導出精靈")] static void SaveSprite() { string resourcesPath = "Assets/Resources/"; foreach (Object obj in Selection.objects) { string selectionPath = AssetDatabase.GetAssetPath(obj); // 必須最上級是"Assets/Resources/" if (selectionPath.StartsWith(resourcesPath)) { string selectionExt = System.IO.Path.GetExtension(selectionPath); if (selectionExt.Length == 0) { continue; } // 從路徑"Assets/Resources/UI/testUI.png"得到路徑"UI/testUI" string loadPath = selectionPath.Remove(selectionPath.Length - selectionExt.Length); loadPath = loadPath.Substring(resourcesPath.Length); // 加載此文件下的所有資源 Sprite[] sprites = Resources.LoadAll<Sprite>(loadPath); if (sprites.Length > 0) { // 創建導出文件夾 string outPath = Application.dataPath + "/outSprite/" + loadPath; System.IO.Directory.CreateDirectory(outPath); foreach (Sprite sprite in sprites) { // 創建單獨的紋理 Texture2D tex = new Texture2D((int)sprite.rect.width, (int)sprite.rect.height, sprite.texture.format, false); tex.SetPixels(sprite.texture.GetPixels((int)sprite.rect.xMin, (int)sprite.rect.yMin, (int)sprite.rect.width, (int)sprite.rect.height)); tex.Apply(); // 寫入成PNG文件 System.IO.File.WriteAllBytes(outPath + "/" + sprite.name + ".png", tex.EncodeToPNG()); } Debug.Log("SaveSprite to " + outPath); } } } Debug.Log("SaveSprite Finished"); } }
在Unity編輯器將會看到Tools菜單下多了"導出精靈"項,選中圖集,然后點擊"導出精靈"菜單項,即可導出子圖成功。如下圖所示: