Sprite Mode:
1. Single:單圖。?
2. Multiple:多圖。?
3. Polygon:多邊形,在SpriteEditor里使用多邊形裁剪精靈。?
Pixels Per Unit:每單位像素?cái)?shù)苦银,在世界場景中,每單位距離有多少個(gè) 像素赶站。
Mesh Type:
1. FullRect:矩形幔虏。
?2. Tight:緊湊的,根據(jù)Alpha通道生成Mesh亲怠。
ExtrudeEdge:拉伸邊緣所计。
Pivot:軸心(僅Single),精靈內(nèi)部坐標(biāo)的原點(diǎn)团秽。
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?分割圖片
Sprite Mode:Multiple
點(diǎn)擊Sprite Editor →點(diǎn)擊Slice出現(xiàn)下面這個(gè)界面
Type:
Automatic:自動(dòng)分割主胧,一般都用這個(gè)
Gird By Cell Size:按像素分割
Gird By Cell Count:按列(Column)和行(Row)分割
選擇好后按Slice就分割了,按住Ctrl可讓分割出來的小圖更清晰习勤,可以點(diǎn)擊小圖自己修改踪栋。最后按Apply就分割好了。
注意下分割好后跟老版本的區(qū)別是不會(huì)再單獨(dú)顯示出來图毕,需要點(diǎn)擊圖片右邊的小三角形就能看到夷都。
很多時(shí)候我們需要將這些分割出來的保存為圖片。下面將代碼貼出來予颤,資源放在Assets/Resources/UI/下
using UnityEngine;
using UnityEditor;
public class TestSaveSprite
{
? ? [MenuItem("Tools/導(dǎo)出精靈")]
? ? static void SaveSprite()
? ? {
? ? ? ? int num = 0;
? ? ? ? string resourcesPath = "Assets/Resources/";
? ? ? ? if (Selection.objects.Length == 0)
? ? ? ? {
? ? ? ? ? ? Debug.LogError("Please Select Picture");
? ? ? ? ? ? return;
? ? ? ? }
? ? ? ? foreach (Object obj in Selection.objects)
? ? ? ? {
? ? ? ? ? ? string selectionPath = AssetDatabase.GetAssetPath(obj);
? ? ? ? ? ? // 必須最上級(jí)是"Assets/Resources/"
? ? ? ? ? ? if (!selectionPath.StartsWith(resourcesPath))
? ? ? ? ? ? {
? ? ? ? ? ? ? ? continue;
? ? ? ? ? ? }
? ? ? ? ? ? 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)
? ? ? ? ? ? {
? ? ? ? ? ? ? ? continue;
? ? ? ? ? ? }
? ? ? ? ? ? // 創(chuàng)建導(dǎo)出文件夾
? ? ? ? ? ? string outPath = Application.dataPath + "/outSprite/" + loadPath;
? ? ? ? ? ? System.IO.Directory.CreateDirectory(outPath);
? ? ? ? ? ? foreach (Sprite sprite in sprites)
? ? ? ? ? ? {
? ? ? ? ? ? ? ? // 創(chuàng)建單獨(dú)的紋理
? ? ? ? ? ? ? ? Texture2D myimage = new Texture2D((int)sprite.rect.width, (int)sprite.rect.height);
? ? ? ? ? ? ? ? //abc_0:(x:2.00, y:400.00, width:103.00, height:112.00)
? ? ? ? ? ? ? ? for (int y = (int)sprite.rect.y; y < sprite.rect.y + sprite.rect.height; y++)//Y軸像素
? ? ? ? ? ? ? ? {
? ? ? ? ? ? ? ? ? ? for (int x = (int)sprite.rect.x; x < sprite.rect.x + sprite.rect.width; x++)
? ? ? ? ? ? ? ? ? ? ? ? myimage.SetPixel(x - (int)sprite.rect.x, y - (int)sprite.rect.y, sprite.texture.GetPixel(x, y));
? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? //轉(zhuǎn)換紋理到EncodeToPNG兼容格式
? ? ? ? ? ? ? ? if (myimage.format != TextureFormat.ARGB32 && myimage.format != TextureFormat.RGB24)
? ? ? ? ? ? ? ? {
? ? ? ? ? ? ? ? ? ? Texture2D newTexture = new Texture2D(myimage.width, myimage.height);
? ? ? ? ? ? ? ? ? ? newTexture.SetPixels(myimage.GetPixels(0), 0);
? ? ? ? ? ? ? ? ? ? myimage = newTexture;
? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? myimage.alphaIsTransparency = true;
? ? ? ? ? ? ? ? System.IO.File.WriteAllBytes(outPath + "/" + sprite.name + ".png", myimage.EncodeToPNG());
? ? ? ? ? ? ? ? num++;
? ? ? ? ? ? }
? ? ? ? ? ? Debug.Log("SaveSprite to " + outPath);
? ? ? ? }
? ? ? ? Debug.Log("SaveSprite Finished? Export Num = " + num);
? ? }
}
放到工程里面就可以在Tools看到囤官,注意冬阳,先點(diǎn)擊剛剛分割好的圖片(源圖),再點(diǎn)擊導(dǎo)出精靈党饮,才能保存成功肝陪。