使用disunity拆解Unity3d制作的游戏获取资源

@凤翔FindiX

听说Windows Live Writer写博客很好用所以我来试一试……
声明:本教程使用所有工具全部来自Github,请不要恶意商业使用版权资源,作为开发者+创意工作者,让我们一起维护自己良好的版权环境。

0. Overview

在产品原型阶段,不可避免的会使用一些他人的素材以及原画缩短开发周期。而在产品风格尚未明朗的情况下,在众多游戏中获取灵感,也是一个“偷懒”的好方法。
过去Cocos-2dX流行的时代,拆解是一个很容易的工作。
而现在越来越多的游戏使用了Unity3D游戏引擎开发,由此带来的问题就是,再也不能右键解压缩对付那些apk了。
本来以为,Unity开发的项目,应该是不能拆了,结果,几经摸索,竟然发现了这么个好东西

DISUNITY
使用Java编写的自动化Unity资源分析器。

废话少说,让我们来看看这是如何使用的吧。

1 .获得Disunity

首先,点击链接下载最新的发行版
直接解压,为了方便,可以把该目录放进环境变量中。
然后在cmd中尝试输入disunity
如果该命令存在,说明已经部署完成。

2. 拆解

同样,还是右击解压apk项目(ipa也可以,只是apk相对比较容易获得)
(对了, 这个网站可以通过Google Play应用地址获得apk下载链接直接下载apk,非常实用向大家推荐)

在项目的libarmeabi-v7a目录下,如果能看到libunity.solibmono.so文件,说明该项目是使用Unity3D开发的,OK,我们可以继续下去了。
下面我们要寻找的,是形如*.unity3d*.assetsff910c990f6ec42858669c600434f140这样一长串符号但是没有后缀名的文件们。
一般来说,他们都位于
assetsbinData
AssetBundlesAndroid
等位置,大家可以自己找找看啦。
找到了以后,事情就简单了。
比如说吧,我们找到在assetsbinData目录下面有很多这样的文件。
我们就可以用这样的命令

C:UsersSeanDocumentsunityassetsbin> disunity Data*

执行完毕之后,你就会发现Data文件夹里,每一个文件都会对应生成一个文件夹,打开他们吧,成果都在里面了!

3. 分类

文件都拆解开了,但是你会发现,他们都是杂乱堆在一起的
难道要我们一个个找出来么?
不,当然不是啦~
有两种方法解决这个问题
一种是把所有文件全部取出来,然后根据拓展名排序即可
还有一种则是通过搜索功能,找出对应拓展名的文件
我一般使用的是第一种
在说明方法之前,先简要介绍一下拆解出来后文件的格式

类型 扩展名 状态
音频片段 .mp3.wav.ogg Ok
字体 .ttf.otf Ok, but wrong file extension for OpenType fonts
Mesh Unity 4 and uncompressed only
TextAsset .txt Ok
Shader .shader Ok
Texture2D .tga Missing support for PVR, ATC and some exotic color formats
Cubemap .obj Wrong texture flags
SubstanceArchive Ok
MovieTexture Ok

有一个需要特别解释的是,最重要的图片素材,是以.tga格式析出的,这种文件可以直接通过Photoshop打开,也可以使用格式工厂之类软件转换为别的格式如.Png等。
知道了扩展名,搜索的方法应该很容易了,不表。
第一种方法主要问题是如何从文件夹中拷贝所有文件出来。
我自己是写了一个Python脚本

# -*- coding: utf-8 -*-

import xlrd
import os
import os.path
import shutil

#需要遍历的目录
fromDir='.'
#文件汇总到的目录
toDir='..result'
list_dirs = os.walk(fromDir)
for root, dirs, files in list_dirs:
    for f in files:
        print os.path.join(root, f)
        shutil.copy(os.path.join(root, f),  toDir+f)
print "All Done"

得到所有文件后,选取需要的,或者分类也都不是问题了

4. GUI

自己是Linux重度使用者
(主要是服务器,桌面用Linux我只能说真的是蛋疼,虽然用着没问题,但是美工模式的时候连Ps都没有你让我凭什么混饭吃……)
shell下工作很顺手,但是也许有些纯美工盆友也需要使用这个工具吧。
(美工:我们才不要呢,我们可以自己画,哼)
有个GUI,可能会方便一些。
OK,这里还真的有人基于.Net写了一个GUI,点击链接下载发行版,直接解压粘贴到disunity目录中,双击打开即可食用,哦不,是使用- –


基本上就是这样喵,如果有什么不清楚的地方可以留言啦~
本来这篇想写的欢快一点的,没想到技术文写的这么严肃……唉真是的。