Exemplo n.º 1
0
        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);
        }