Unity工程資源破解

    Unity工程資源提取其實仍是很方便的,網上也有不少相關介紹,好比雨凇就專門寫了一遍關於破解Unity資源的文章(http://www.xuanyusong.com/archives/3618),固然即便有傻瓜式教程,也不免會踩一些坑,下面記錄一下這兩天破解Unity資源的工程。java

    一.disunity

    disunity是一款開源項目,java語言寫的,輕量級,傳言簡單易用,然而並很差用,git

    1.disunity5.x版本命令如未嘗試都不成功,老是報出以下問題:github

{KXT7_@3~(TKFOM1AD8IZZ8

     2.disunity3.x 使用仍是比較順利的,可是並無破解徹底,一部分貼圖並無被提取出來,並且每張貼圖有不少mip圖集,整體破解結果並很差。c#

BKJ0]]CL@_8F~}}UJGY46AP

      如破解結果:工具

){@QFG1}]2991B(2BU4S9IB

 

    二.UnityAssetsExplorer

    這個工具也能夠順利提取資源,可是使用也挺方便,可是提取的資源也不是十分使人滿意。不過最新版本聽說支持Unity5.x,具體沒繼續嘗試了。spa

 

    三. Unity Studio

    Unity Studio十分強大,能夠在直接預覽資源,可是導出的貼圖文件時dds格式,並且導出的貼圖是「倒的」,兩個難點:dds轉png或者jpg 、 把圖片反轉。3d

使用方法十分簡單,只要File—>選擇解壓包目錄assets\bin\Data就能夠了,以後就能夠看到資源列表了:code

`Q9Q8M}UJJ6I9QTL6DTF$GX

 

以後就能夠導出資源了,Unity Studio導出的貼圖是dds格式,須要轉換其餘格式,這裏推薦DDS Converter,使用也很簡單,可是,可是,可是……轉換後的貼圖居然是倒着的orm

BG2E8C`MVTBC{$M7BWG]UJX

這裏就有第二個問題,處理圖片倒位問題,這裏彷佛就沒什麼工具能夠用了,不過簡單思考一下也能夠找到解決辦法。既然圖片是倒的,那隻須要把像素點上下反轉一下就能夠的,按照這個想法就用c#寫了一個簡單的工具,也就實現了正常的圖片,貼一下代碼:blog

namespace WindowsFormsApplication1
{
    class HandleImage
    {
        static string loadPath = @"E:\NewProject\Test\rst\";
        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

相關文章
相關標籤/搜索