将texturepacker生成的png和xml资源反向生成小图供unity使用

最近破解一个游戏apk,需要提取里面的资源文件,在unity中使用。

using UnityEngine;
using UnityEngine.UI;
using System.Collections;
using System.Xml;
using System.IO;
public class ParseXml : MonoBehaviour {

	// Use this for initialization
    public Image image;
	void Start () {
        Object[] objs= Resources.LoadAll("xml/");
        for (int i = 0; i < objs.Length; i++ )
        {
            loadXml(objs[i].ToString());
        }
        //loadXml(file.ToString());
	}
	
	// Update is called once per frame
	void Update () {
	
	}

    void loadXml(string source)
    {
        XmlDocument doc = new XmlDocument();
        doc.LoadXml(source);
        XmlNode rootNode = doc.SelectSingleNode("TextureAtlas");
        string imagePath = rootNode.Attributes["imagePath"].Value;
        int SOURCEHEIGHT = int.Parse(rootNode.Attributes["height"].Value);
        Texture2D tex = Resources.Load(imagePath.Substring(0, imagePath.Length -4)) as Texture2D;
        
        Debug.Log(tex.width  +"      "+tex.height);
        //image.sprite = tex as Sprite;
        XmlNodeList list = rootNode.ChildNodes;
        foreach(XmlNode node in list)
        {
            XmlElement e = (XmlElement)node;
            string name = e.GetAttribute("n").ToString();
            int x = int.Parse(e.GetAttribute("x").ToString());
            int y = int.Parse(e.GetAttribute("y").ToString());
            int w = int.Parse(e.GetAttribute("w").ToString());
            int h = int.Parse(e.GetAttribute("h").ToString());

            Texture2D mTexture = new Texture2D(w, h, TextureFormat.RGBA32, false);
                        
            for (int i = 0; i < w; i++)
            {
                for(int j = 1;j <=h; j++)
                {
                    mTexture.SetPixel(i, h-j, tex.GetPixel(x + i, SOURCEHEIGHT - (y + j)));
                }
            }
            
            Debug.Log(name + "---" + x + "---" + y + "---" + w + "---" + h);

            byte[] bt = mTexture.EncodeToPNG();
            Directory.CreateDirectory(Application.dataPath + "/result/" + imagePath);
            string savePath = Application.dataPath + "/result/" + imagePath +"/"+ name + ".png";
            File.WriteAllBytes(savePath, bt);

        }
    }
}

将xml文件放到Resources的xml目录下,png文件放到Resources目录下

### 回答1: TexturePacker 是一款用于创建纹理图集的工具,它可以将多个图片文件(通常是 PNG 格式)合并成一个大图,并生成相应的数据文件,以便在游戏使用。 下面是将 PNG 格式转化为 csprite 格式的中文教程: 1. 下载并安装 TexturePacker。 2. 打开 TexturePacker,在“输入”选项卡中,单击“添加文件夹”按钮,然后选择包含要合并的图片的文件夹。也可以单击“添加文件”按钮,手动选择图片文件。 3. 在“输出”选项卡中,选择 csprite 格式。 4. 在“常规”选项卡中,可以调整纹理图集的尺寸、边距和填充等参数。 5. 单击“开始打包”按钮,开始生成纹理图集。 生成的纹理图集将会保存在指定的输出目录中,同时会生成一个 csprite 格式的数据文件,包含每个图片在纹理图集中的坐标信息。 在游戏使用时,可以通过程序来读取 csprite 格式的数据文件,并根据坐标信息将对应的图片绘制到屏幕上。 ### 回答2: TexturePacker 是一款强大的纹理打包工具,可以将多个 png 格式的图片打包成 csprite 格式的纹理集,方便在游戏开发中使用。下面是一份中文教程,教你如何使用 TexturePacker 来转化 png 格式为 csprite 格式的纹理集。 1. 首先,在电脑上下载并安装 TexturePacker。 2. 打开 TexturePacker,点击菜单栏中的 "文件",然后选择 "新建" 以创建一个新的纹理集项目。 3. 在新建的项目中,点击下方的 "导入" 按钮,然后选择需要转化的 png 格式的图片文件。 4. 选中所有需要打包的图片,点击导入按钮后的 "打开" 按钮,将图片导入到 TexturePacker 中。 5. 在 TexturePacker 界面的右侧,你可以设置一些纹理打包的参数,例如旋转、缩放、剪裁等。根据你的需要进行设置。 6. 在 "输出设置" 部分,选择 "合并为" 选项,并选择 csprite 格式。 7. 设置输出路径和文件名,以及输出文件的大小格式等相关参数。 8. 点击 "打包" 按钮开始进行纹理打包。 9. 打包完成后,在输出路径中就会生成一个 csprite 格式的纹理集文件。 10. 将生成的纹理集文件导入到你的游戏开发工具中,就可以在游戏使用这个纹理集了。 通过上述步骤,你可以使用 TexturePackerpng 格式转化为 csprite 格式的纹理集。它不仅可以提高游戏的运行效率,还能使开发过程更加简洁和方便。希望这个教程对你有所帮助! ### 回答3: TexturePacker是一款用于将png格式图片转化为csprite格式的工具,它能够将多个图片合并成一张纹理图,并生成对应的csprite文件,方便游戏开发者进行精灵动画的制作和管理。 以下是使用TexturePackerpng格式转化为csprite格式的中文教程: 1. 首先,我们需要下载和安装TexturePacker软件。可以在官方网站上下载到最新版本的TexturePacker,并按照指示完成安装。 2. 打开TexturePacker软件后,点击"添加文件"按钮,选择需要转化为csprite格式的png图片文件。可以选择多个文件进行批量转化,也可以选择整个文件夹进行批量导入。 3. 在右侧的设置栏中,可以选择生成的纹理图的属性,比如尺寸、颜色格式等。可以根据项目需求进行调整。 4. 在设置栏中,还可以设置纹理图的打包方式,比如使用智能打包算法或者手动调整位置。可以根据需求选择不同的打包方式。 5. 在设置栏中,选择生成csprite文件的输出路径和文件名。点击"设置"按钮可以进一步调整csprite文件的属性,比如帧率、循环方式等。 6. 确认设置后,点击"开始打包"按钮,TexturePacker将开始将png图片转化为csprite格式。这个过程可能需要一些时间,取决于图片的数量和大小。 7. 打包完成后,可以在输出路径中找到生成的csprite文件和纹理图。将它们导入到游戏引擎中,即可使用csprite格式的精灵动画。 通过上述步骤,我们可以轻松使用TexturePackerpng格式图片转化为csprite格式,并且生成对应的csprite文件,方便游戏开发者进行精灵动画的制作和管理。希望这个教程能够对你有所帮助!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值