利用Unity切割图集
我们在在使用网络上搜集的一些素材的时候,经常是倍打成图集的,为了方便使用,可以利用Unity强大的SpriteEditor自动切割成为小图片素材。
如果我们需要再次加工处理,也可以继续利用Sprite Editor的功能,将切割好的图片直接导出。
首先,导入图集
注意,Read Write Enable 必须要勾选。
打开Sprite Editor 切割图集
Apply之后Unity 就帮我们切好图集了, 之后我们就可以写代码导出了。
导出代码
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEditor;
using System.IO;
public class AtlasTool : Editor {
[MenuItem("Tools/Slice Atlas")]
public static void SliceAtlas()
{
if(!Directory.Exists("atlasout"))
{
Directory.CreateDirectory ("atlasout");
}
var dir = new DirectoryInfo ("Assets/AtlasTool");
var imgs = dir.GetFiles ("*.png");
for (int i = 0; i < imgs.Length; i++) {
DealPng (imgs[i]);
}
}
public static void DealPng(FileInfo file)
{
var outdir = "atlasout/" + file.Name.Replace (".png", "");
if(!Directory.Exists(outdir))
{
Directory.CreateDirectory (outdir);
}
string path = "Assets/AtlasTool/" + file.Name;
var assets2 = AssetDatabase.LoadAllAssetsAtPath (path);
for (int i = 0; i < assets2.Length; i++) {
Debug.LogError (assets2[i]);
if(assets2[i] is Sprite)
{
var sp = assets2 [i] as Sprite;
Texture2D t2d = new Texture2D ((int)sp.rect.width, (int)sp.rect.height, TextureFormat.RGBA32, false);
var aslasTexture = sp.texture;
t2d.SetPixels (aslasTexture.GetPixels((int)sp.rect.x, (int)sp.rect.y, (int)sp.rect.width, (int)sp.rect.height));
t2d.Apply ();
File.WriteAllBytes (outdir +"/" +sp.name +".png", t2d.EncodeToPNG());
}
}
}
}
注意目录:
然后点击菜单:Tool/Slice Atlas
直接上结果:
很简单但是有些使用的工具哦!