Yeah, I was also baffled that no one else has wrote it before…
The atlas must have following format:
{
"frames":
{
"frame1":
{
"frame": {"x":2,"y":2,"w":866,"h":718},
"rotated": false,
"trimmed": false,
"spriteSourceSize": {"x":0,"y":0,"w":866,"h":718},
"sourceSize": {"w":866,"h":718}
},
"frame2": { ... },
...
},
"meta":
{
"app": "http://www.codeandweb.com/texturepacker ",
"version": "1.0",
"image": "menuIcons.png",
"format": "RGBA8888",
"size": {"w":1024,"h":2048},
"scale": "1",
"smartupdate": ""
}
}
TexturePacker creates this file for you.
If you have an other format from other programs you have to write your on parser. But this is not difficult, basically you have to do following:
TextAsset txt = (TextAsset)Selection.activeObject;
string rootPath = Path.GetDirectoryName(AssetDatabase.GetAssetPath(txt));
List<SpriteMetaData> sprites = TexturePacker.ProcessToSprites(txt.text);
string path = rootPath + "/" + meta.image;
TextureImporter texImp = AssetImporter.GetAtPath(path) as TextureImporter;
//load texture, and assign sprites
texImp.spritesheet = sprites.ToArray();
texImp.textureType = TextureImporterType.Sprite;
texImp.spriteImportMode =SpriteImportMode.Multiple;
AssetDatabase.ImportAsset(path, ImportAssetOptions.ForceUpdate );
Sprites is a list of SpiteMetaData. Here some pseudo code:
public static List<SpriteMetaData> ProcessToSprites(string text) {
.... parse XML ...
List<SpriteMetaData> sprites = List<SpriteMetaData>();
foreach (var sprite in xmlFile) {
SpriteMetaData smd = new SpriteMetaData();
smd.rect = new Rect(x,y,with,height);
smd.alignment = 1;
smd.name = name;
smd.pivot = new Rect(x,y);
sprites.Add(smd);
}
return sprites;
}
That’s all 