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—>選擇解壓包目錄assets\bin\Data就可以了,之后就可以看到資源列表了:

`Q9Q8M}UJJ6I9QTL6DTF$GX

 

之后就可以導出資源了,Unity Studio導出的貼圖是dds格式,需要轉換其他格式,這里推薦DDS Converter,使用也很簡單,但是,但是,但是……轉換后的貼圖竟然是倒着的

BG2E8C`MVTBC{$M7BWG]UJX

這里就有第二個問題,處理圖片倒位問題,這里似乎就沒什么工具可以用了,不過簡單思考一下也可以找到解決辦法。既然圖片是倒的,那只需要把像素點上下反轉一下就可以的,按照這個想法就用c#寫了一個簡單的工具,也就實現了正常的圖片,貼一下代碼:

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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM