I’ve been wanting to add full modding support to my game - aka being able to modify prefabs, textures, meshes, sounds, and scriptable objects. The most powerful solution would be to be able to modify the “pointer” that connects the reference to the asset, since it would mean no file modifications. Addressables solves this, but requires that every moddable asset is a addressable, something that is absolutely impossible for my project at this point.
There are some solutions out there that involve modifying the asset bundles of a build:
UABE: Very powerful tool that allows for export / import of assets
UtinyRipper: Tool that only exports assets
The former is what I will probably end up using. However, it would be incredible if there was a way to instead modify a build to change how asset loading works entirely - aka instead of merely reading from the .assets files, it would have a little bit of code that would first check if a replacement asset exists somewhere specific in a folder or file. This would allow for a more “drag and drop” approach to modding (having mod files separate from original assets), a lot like the Creation Engine, as opposed to modifying (and thus possibly destroying) the asset files.
I’m sure this is essentially impossible, but I figured I’d ask if this is even reasonable. It would have to be a modification to the build exe, since reference stuff is not accessible via C# of course.