Unpacking Unity 3D projects

  • platform: windows 10 64bits
  • recovery of Unity3D assets

A windows executable made with Unity is usually (always?) composed of an .exe and a *_Data folder containing all the scripts, shaders, textures, meshes, etc. required to run the game.
The files in *_Data folder are obfuscated for obvious IP reasons. When looking into it, you will sees a series of extension less files, some *.assets and *.assets.reS files. The stargate to get the assets back are these *.assets files.

Extraction of *.assets

First of all, we need a decompression utility. The one we used is uTinyRipper in standalone mode.
It’s very simple to use, but there’s some subtleties to be aware of when it comes to unpacking a Unity project.
It seems that Unity scatters all the resources across multiple sharedassets*.assets files. Why? No idea, but it requires a bit of method to avoid uncompressing same files again and again.

behaviour of utinyripper

As shown above, sharedassets files depends on each other and are able top point to their dependencies. Therefore, we suggest to start by the last sharedassets*.assets file in the folder, as it might depend on all before it. If some sharedassets files are not present in uTinyRipper, drag the last one and repeat the operation.

Extraction of materials, meshes and rigs

Once exported, uTinyRipper creates a folder structure in the target folder looking like this:

folder structure generated by uTinyRipper

All textures aare easy to retrieve, just navigate to Texture2D folder and browse the .png

textures extracted by uTinyRipper

If you want to get geometries and related objects, it will be more complex: unity is storing them in generic *.asset file format. To retrieve editable meshes, you will need a bit of space on your hard-drive to install Unity Editor. Once installed, create an empty 3D project and launch it.
Once unity ois running, get GLTF exporter addon from Plattar (a thousand thanks to h.is.er work).
If you struggle to install it, what I did is copy/paste the v1.93.0-unity.unitypackage in the Assets folder, and double-click on it in the Unity Folder panel (i works just fine).

Once installed, move the folder extracted with uTinyRipper inside the folder Assets of the Unity project.

export a prefab with GLTF exporter

Export, unzip the file, and open the *.gltf file with blender3d (for instance…)

gltf with armature and materials in b3d

References:

Leave a Reply

Your email address will not be published.

This site uses Akismet to reduce spam. Learn how your comment data is processed.