Unity3D研究院之mac上從.ipa中提取unity3D遊戲資源
http://blog.csdn.net/dl_hum/article/details/28440983
感謝今天某大神(既然是大神名子我當然要保密嘍)告訴我Disunity更新了,不然我還不知道。以前很多人都說用Disunity提取出了Unity3D資源,但是我在Mac上從來沒有成功過,一直在報錯。https://github.com/ata4/disunity/releases 在這裡可以看到Disunity3.0是19天以前更新的,新版本真的是太好用了,我不得不讚一下 嘿嘿。 不過記得要在MAC上裝好jdk7
http://www.oracle.com/technetwork/java/javase/downloads/jdk7-downloads-1880260.html 在這裡可以下載mac os 的。
接著找一個Unity3d做的遊戲,這裡我在補充一下如何辨認某個遊戲是用u3d做的。
1.在網上隨便下載一個遊戲.ipa,並且解壓到本地。
2.找到xxx/xxx.app,右鍵顯示包內容,開啟Data資料夾。
3.如果發現資料夾中包含 unity default resources 檔案,那麼恭喜你這個遊戲就是用unity3d做的。
再看看這裡幾個比較重要的檔案。
level0 / leve1 …. 圖中0-5一共有6個檔案,這表示這個遊戲用了6個遊戲場景。
sharedassets0/sharedassets1 …. 圖中0-6一共有7個檔案,它的數量永遠比場景的數量多一個,可見它和場景有關聯性,可以用工具把它解開看看。
Managed:這個資料夾下放的都是dll ,unity自己寫的指令碼編譯成dll後就放在這裡,還有其他第三方的dll也放在這裡。
resources.assets:這個東西就比較重要了,他遊戲裡面所有放在resources資料夾下的東西都會放在這裡,我們提取也主要在這裡提取。
Raw:如果遊戲在StreamingAssets資料夾下放東西,那麼就會出現一個Raw資料夾。
PS:我個人覺得最好不要在StreamingAssets資料夾下放東西,因為ipa一解開就能看到裡面放的啥東西了。如果真的要放,我覺得最好不要放.assetbundle 檔案。 因為你需要用www.LoadFromCacheOrDown 這樣第一次它會把StreamingAssets
回到正題,說說怎麼提取資源。
https://github.com/ata4/disunity/releases
先把DisUnity3.0版本下載到本地然後解壓。 確保本地裝了jdk7以後開啟終端執行。
java -jar /Users/MOMO/Desktop/disunity_v0.3.0/disunity.jar extract /Users/MOMO/Desktop/Data/resources.assets
一個是disunity.jar的路徑,另外一個是resources.assets的路徑,根據你電腦的路徑來配置就可以了。 嘿嘿嘿各種資源就呼呼呼的解開啦。。如下圖所示,它會在resources.assets的同級目錄自動建立一個resources的資料夾。
AudioClip:這裡是解開的遊戲全部聲音檔案,可以直接播放。
Mesh:這裡解開的遊戲全部模型檔案,他的格式是.obj 你需要在3dmax或者maya中開啟,然後轉成FBX就可以在u3d裡面看到了,嘿嘿。
Shader:這裡解開遊戲 全部用的shader檔案,可以直接使用。
TextAsset:這裡解開的是遊戲中全部用的text文字檔案,如果文字不加密,這裡就全都會看到的 嘿嘿呵。
Texture2D:這裡放的就是遊戲中用到的所有圖片,一般是由tga或者 ktx組成,tga可以直接在電腦上檢視,但是.ktx需要藉助工具來看。
嘿嘿,這裡我把Hello Hero這個遊戲的圖集解開了。如下圖所示,這是它用的一個UI圖集。
但是模型的貼圖怎麼解開呢?HelloHero的所有模型貼圖都是.ktx格式的。
我們首先要下載一個神一樣的工具,嘿嘿。
http://community.imgtec.com/developers/powervr/installers/
下載 PowerVR Tools & SDK v3.3 – MacOS X Installer
下載以後需要安裝,安裝的時候有一個開啟檔案的型別,你可以勾選一下.ktx
安裝完以後,執行檔案的路徑很深
/Applications/Imagination/PowerVR/GraphicsSDK/PVRTexTool/GUI/OSX_x86
雙擊開啟就可以。如下圖所示,把ktx的圖片拖進來就可以看到它的原圖了。。
開啟.ktx的圖以後,可以在把它匯出成可以直接在電腦上預覽的圖片了。。嘿嘿嘿嘿,是不是很簡單哈?
我在補充一下, 這兩個工具都是跨平臺的, windows linux mac都可以使用的。
我在補充一下,如果你解開的哪個遊戲裡面沒有resources.assets 那麼有可能它遊戲裡面 沒有Resources這個資料夾。有可能它是通過assetbundle下載的。。
java -jar /Users/MOMO/Desktop/disunity_v0.3.0/disunity.jar extract /Users/MOMO/Desktop/Data/*.assets
你可以執行,把所有的.assets都解開。因為有些東西他可以預製在場景裡面,不需要通過Resources.Load。
你最好在反編譯一下它的程式碼, 看看它的assetbundle的下載地址是多少。。