Brett Woodward
Brett Woodward

Reputation: 408

Recompiling/Editing an asset within a .unity3d file

Apologies for the ignorance in this question.

Suppose I have an example.unity3d file, and that's all. Is it possible to edit/change/replace an asset within? I have Disunity, and can get things like the following:

All the raw files (example)

    AssetBundle
         X.bin
    Assets
    AudioClip
         1.bin
         2.bin
    AudioSource
    ...etc

A list of everything in there

[info] DisUnity v0.2.1
Path                                                             | Offset     |     Length
---------------------------------------------------------------- | ---------- | ----------
CAB-file                                                         | 0x18       |   18750004

[info] Processing file.unity3d:CAB-file
PID          | CID  | Class name               | Offset     |     Length | Object name
------------ | ---- | ------------------------ | ---------- | ---------- | -----------
-2146260248  | 82   | AudioSource              | 0x38       |        164 |

...etc.

The structure

[info] DisUnity v0.2.1
GameObject
  vector m_Component
    Array Array
      SInt32 size
      pair data
        SInt32 first
        PPtr<Component> second
          SInt32 m_FileID
          SInt32 m_PathID
...etc

The raw data itself (binary)

The actual assets (ogg files)


So I feel like I have everything I need to go in and edit one of those sound files, but for some reason I can't quite figure out how to get all that data into the Unity program to recompile. I know you can't directly import the *.unity3d file, but surely there is an easier way outside of somehow editing the hex?

This would be a great help to me. Thanks!

Upvotes: 4

Views: 11576

Answers (2)

Wok
Wok

Reputation: 5303

This used to be possible with Unity Assets Bundle Extractor (UABE). However, this software has not been updated since August 2019, and it is not compatible with the latest versions of Unity.

Nowadays, the replacement of choice seems to be:

  1. This tool can decompress and export Unity assets.
  2. Then, you can edit files with other tools, e.g. a text editor.
  3. Finally, this tool can import and compress the edited files.

Other potential replacements would be:

  • Unity Assets Advanced Editor (UAAE), which can decompress, export and compress files, but I am unsure about its ability to edit files or import edited files.
  • AssetRipper, though it can only decompress & export, not edit, import or compress files.

Upvotes: 2

Chris
Chris

Reputation: 1

11 Months and no honest answer? Anyway, use the unpackassets editor extension to import the *.cab file... you will have to use * in the file selector, but you will be able to import the whole cab file... you will get all the assets plus a monoscript resource file which is a symbolic link to the actual scripts but will usually crash the unity compiler... so delete or move it out of the project folder and restart unity. Use ILSpy or .NetReflector8 to decompile the scripts. The scripts are contained within the Assembly-CSharp.dll, Assembly.Csharp-firstpass.dll, Assembly.UnityScript.dll, and Assembly.UnityScript-firstpass.dll. If you had kept the monoscript folder you can see what reference scripts are being referenced and use those to recompile the project file. That part is a pain in the butt. The meshes and prefabs along with gameObjects often get imported fine within unity; you can export them for later use, or use X-Change3d by bloodysoft (in the unity store) to export them as fbx as I do to modify them. Anyway... this should help you for a start if you are still interested...

Upvotes: 0

Related Questions