https://github.com/HearthSim/UnityPack
这个是一个python的 使用之前呢 先别急着git clone和python setup.py install。首先是为了干净 自觉创建一个virtualenv。然后就是安装dependency 虽然UnityPack会帮我们安装 但我安装的时候一直报错 所以就直接pip install了。
当然在MacOS上至少我的Intel BigSur上decrunch是安装不成功的 即使下载源代码python setup.py install也会报错 这个就麻烦了。所以搜索了一下这个库做了啥 原来是有些Texture2D是压缩了的 需要解压 反正我要摆弄的unity文件里没有要解压的 所以把unitypack/engine/texture.py里的import decrunsh相关的都移动到判断确实是压缩文件的if里 这样就不用安装decrunch了 记得顺带修改setup.cfg把decrunch注释掉。
安装完成 那么我们就可以使用了 unityextract --all -n -o /path/to/output/dir /path/to/unity/asset/file 这中间带个-n就是看看它运行了啥 要输出啥 oh no WARNING: Texture format not implemented. Skipping Erma.png 我要的资源没有解压。那只能再改改代码 把信息print出来了。啊哦 打印出来一个ETC2_RGBA8 再在代码里找找 IMPLEMENTED_FORMATS下面没有这项 所以它会抛出不支持的错误 那这个ETC2咋解
尝试了各种etcpack的第三方包 没有doc能说从raw block解码的 都是存成了ktx……
我记得windows上有个叫unityRipper的工具好像是可以解码的 找到它的github repo和对应文件
https://github.com/mafaca/UtinyRipper/blob/master/uTinyRipperGUI/ThirdParty/Texture%20converters/EtcDecoder.cs
啊喂 又要我来人工代码转换……C# - python 好吧 我写 几个小时后 运行……哈哈 输出一片栅栏格子…继续搜索 发现原来我一直再搜索PIL ETC2 decode 而我用的Pillow可不是PIL……一个pillow etc2 codec 好了 找到了别人写好的integration
https://github.com/K0lb3/etcpack
git clone python setup.py install 再import 好了终于可以decode etc2了。开始dump咯



