I want to pre-download all the updated remote bundles and enable Only update catalogs manually. Here is my approach:
- Open a scene with only a GUI panel called PatchMenu to show downloading progress etc.
- All the assets the scene used are packed into single bundle call PatchBundle. It’s local and have no references to other bundles except built-in bundles.
- Unity generate two built-in bundles for me, one is unitybuiltinshaders, another is monscripts. They both have hash added to their file names, so the real bundle file is such as xxxxxx_monoscripts_xxxxx
- Then I call CheckForCatalogUpdates, UpdateCatalogs, DownloadDependenciesAsync … I have managed to make everything works well until one of the built-in bundles is changed.
- The changed built-in bundle, take xxxx_monoscripts_xxxx for example, has a different hash appended to its name and get uploaded to ServerData. But when I try to load it (after downloading), I get an error from Addressables
The AssetBundle can’t be loaded because another AssetBundle with the same files is already loaded
It looks like that if I’m using a built-in bundle such as xxx_monoscripts_xxx, I can’t load another xxx_monoscripts_xxx anymore, even if they have different file names. I’m not sure if it applies to other non built-in remote bundles. Is this by design, or did I miss something ?
I should point out that I have use a custom InternalIdTransformFunc to redirect remote bundles’ path to streamming assets folder if I could find one inside it. Because I don’t want players to download all remote bundls at first launch. So I put all remote bundles inside streaming assets folder to ship with the application. Once a remote bundle is changed, it has a different file name with appened hash. So it can’t be found in streamming assets folder and will get downloaded. If this approch has any potential to cause problems, please let me know.
Currently the solutions that I’m considering are:
- Ask players to reboot the game. Yes, once I reboot the game, everything goes right because the new bundles are downloaded into the cache. But this way is so rude. And when the cache is gone, I will be facing the same problem.
- Remove the dependencies from PatchBundle to built-in bundles. I doubt weather it can be done. Because the built-in bundle is a black box, I even don’t know what’s inside and what cause them to be modified.
- Try to find out some ways to unload the bundle, or turn to some custom bundle management.
Pre-downloading updated bundles is so a common requirement. It’s hard to believe that it’s so difficult to impelment it right with Addressables. I have searched around in the community and found a lot of related topics but without any lucks. I would greatly appreciate any suggestions you have regarding the issues I’m facing.



