zoukankan      html  css  js  c++  java
  • Unity工程资源破解

        Unity工程资源提取其实还是很方便的,网上也有很多相关介绍,比如雨凇就专门写了一遍关于破解Unity资源的文章(http://www.xuanyusong.com/archives/3618),当然即使有傻瓜式教程,也难免会踩一些坑,下面记录一下这两天破解Unity资源的工程。

        一.disunity

        disunity是一款开源项目,java语言写的,轻量级,传言简单易用,然而并不好用,

        1.disunity5.x版本命令如何尝试都不成功,总是报出如下问题:

    {KXT7_@3~(TKFOM1AD8IZZ8

         2.disunity3.x 使用还是比较顺利的,但是并没有破解完全,一部分贴图并没有被提取出来,而且每张贴图有很多mip图集,总体破解结果并不好。

    BKJ0]]CL@_8F~}}UJGY46AP

          如破解结果:

    ){@QFG1}]2991B(2BU4S9IB

        二.UnityAssetsExplorer

        这个工具也可以顺利提取资源,但是使用也挺方便,但是提取的资源也不是十分令人满意。不过最新版本据说支持Unity5.x,具体没继续尝试了。

        三. Unity Studio

        Unity Studio十分强大,可以在直接预览资源,但是导出的贴图文件时dds格式,而且导出的贴图是“倒的”,两个难点:dds转png或者jpg 、 把图片反转。

    使用方法十分简单,只要File—>选择解压包目录assetsinData就可以了,之后就可以看到资源列表了:

    `Q9Q8M}UJJ6I9QTL6DTF$GX

    之后就可以导出资源了,Unity Studio导出的贴图是dds格式,需要转换其他格式,这里推荐DDS Converter,使用也很简单,但是,但是,但是……转换后的贴图竟然是倒着的

    BG2E8C`MVTBC{$M7BWG]UJX

    这里就有第二个问题,处理图片倒位问题,这里似乎就没什么工具可以用了,不过简单思考一下也可以找到解决办法。既然图片是倒的,那只需要把像素点上下反转一下就可以的,按照这个想法就用c#写了一个简单的工具,也就实现了正常的图片,贴一下代码:

    namespace WindowsFormsApplication1
    {
        class HandleImage
        {
            static string loadPath = @"E:NewProjectTest
    st";
            public void HandleImg()
            {
                string[] files = Directory.GetFiles(loadPath);
                for (int i = 0; i < files.Length; i++)
                {
                    Bitmap img = new Bitmap(files[i]);
                    Bitmap bTemp = RevPicUD(img);
                    Save(bTemp, files[i]);
                }
            }
    
    //上下翻转
             public Bitmap RevPicUD(Bitmap mybm)
             {
    
                 int height = mybm.Size.Height;
                 int width = mybm.Size.Width;
                Bitmap bm = new Bitmap(width, height);
                 int x, y, z;
                Color pixel;
                for (x = 0; x < width; x++)
                 {
                     for (y = height - 1, z = 0; y >= 0; y--)
                     {
                         pixel = mybm.GetPixel(x, y);//获取当前像素的值
                         bm.SetPixel(x, z++, Color.FromArgb(pixel.R, pixel.G, pixel.B));//绘图
                     }
                }
                return bm;
             }
    //左右翻转
            public Bitmap RevPicLR(Bitmap mybm)
             {
                 int height = mybm.Size.Height;
                 int width = mybm.Size.Width;
                 Bitmap bm = new Bitmap(width, height);
                int x, y, z; //x,y是循环次数,z是用来记录像素点的x坐标的变化的
                 Color pixel;
                 for (y = height - 1; y >= 0; y--)
                {
                     for (x = width - 1, z = 0; x >= 0; x--)
                    {
                         pixel = mybm.GetPixel(x, y);//获取当前像素的值
                         bm.SetPixel(z++, y, Color.FromArgb(pixel.R, pixel.G, pixel.B));//绘图
                     }
               }
                 return bm;
             }
    
    
            public void Save(Bitmap bitMap , string path)
            {
                path = path.Replace("rst", "handled");
                bitMap.Save(path, ImageFormat.Jpeg);
            }
        }
    }

    处理完上面的问题,贴图就算基本正常了,如图:

    ABG7NEHA8Y)G25E0{O07PZ7

    哈哈,到这里资源提取就算基本成功了,但是……还是有个问题,就是alpha通道丢失了,想了很久并没有找到解决办法,只能用ps抠图了,汗……如果有大神有办法完美解决这个问题,还请留言赐教一下哈

    附上dds转换工具和Unity Studio 工具下载:http://files.cnblogs.com/files/lixiang-share/UnityResTools.zip

  • 相关阅读:
    C# 请求API(一次登陆,多次请求)
    C# WebAPI 跨域问题Cors
    正则表达式校验YYYYMMDD
    C# 通过Smtp 完成系统发送邮件
    C# Log4Net 记录项目日志
    C# 自定义Attribute
    C#泛型
    SQL从数据库导出数据到EXCEL换行的问题解决方法
    C# 在MVC 中把DataTable中的数据导出到Excel
    闹心的CSDN
  • 原文地址:https://www.cnblogs.com/lixiang-share/p/5840444.html
Copyright © 2011-2022 走看看