List <TextureDump> DumpImages(GameObject obj, DirectoryInfo directory) { List <TextureDump> files = new List <TextureDump>(); var spriteFolder = directory.FullName + "\\Sprites"; var tkSprite = obj.GetComponent <tk2dSprite>(); if (tkSprite == null) { return(files); } foreach (var texture in tkSprite.Collection.textures) { if (texture is Texture2D) { var t2D = (Texture2D)texture; RenderTexture dumpTexture = new RenderTexture(t2D.width, t2D.height, 24, RenderTextureFormat.ARGB32); Graphics.Blit(t2D, dumpTexture); Texture2D myTexture2D = new Texture2D(t2D.width, t2D.height, TextureFormat.ARGB32, false); myTexture2D.ReadPixels(new Rect(0, 0, dumpTexture.width, dumpTexture.height), 0, 0); myTexture2D.Apply(); var data = myTexture2D.EncodeToPNG(); var fileName = t2D.name + "-" + StreamUtilities.GetHash(data); //RemoveInvalidChars(ref fileName); fileName = RemoveInvalidChars(fileName); var dataLocation = new FileInfo(spriteFolder + "\\" + fileName + ".png"); dataLocation.Directory.Create(); using (var fileStream = dataLocation.Create()) { using (var writer = new BinaryWriter(fileStream)) { writer.Write(data); } } files.Add(new TextureDump() { FileLocation = dataLocation, FileName = fileName, Texture = texture }); } } return(files); }