2
\$\begingroup\$

I have a project that already uses asset bundles. I download assets when the game starts and show them to the user when needed.

I see that Unity provides addressables as new solution for asset management. As its new (not very new as its accessible from 2018.2, but official docs dont say a lot) there is not so much about it on the web.

From what it seems, in addressables you dont need to care about the bundle version, or which asset is in which bundle. In addresables, Unity automatically uploads assets to your host, and Unity automatically correctly manages local caching or downloads from a server, so objects behave like they are in the main game package but you have to check if they are loaded or downloaded. Am I right? Are there any other features that addressables offer?

\$\endgroup\$
1

2 Answers 2

3
\$\begingroup\$

The main advantage of Addressables is that they make it very easy for your game to acquire a certain asset by name at runtime.

This used to be pretty annoying with asset bundles. First you had to know in which asset bundles that asset was hiding in. Then you had to find out if this asset bundles was already loaded, and when it wasn't you had to load it first. And only then were you able to retrieve the asset with assetBundle.LoadAsset(name).

But with Addressables you just need to know the address string. You can then just do Addressables.LoadAsset<Type>(address); and Unity will automatically find out if the asset and its dependencies need to be loaded from the local filesystem or from a remote server and do so if necessary.

\$\endgroup\$
1
\$\begingroup\$

Personally I also don't get it. If you made the game and you saved your content intelligently then knowing where an asset is located is as easy as knowing the filepath to it (rather than a file url). Using the old WWW.LoadFromCacheOrDownload() meant getting ahold of the latest version and loading it was one line of code.

This means that in the old way you have to upload a new asset bundle each time you rebuild it and just place it at the same URL where you placed it before. Job done.

Now you first have to create online projects to generate buckets and keys for the project and buckets so you can then download a CLI to authorize your system before you can then go into Unity and create a URL based of an existing URL you just magically have to know and then augmented with 2 of the API keys you get from the online project under a few submenus deep before you can finally get around to building the asset bundles (hey look, back to where we started) and publish it to the development URL until you are ready to release in which case you build and publish to the release bucket and NOW... now it is so much easier to use because now you just have to know the address string which is sooooooo much easier than knowing the file path you placed your content into.

Soooooo much easier... only not!

\$\endgroup\$
1
  • \$\begingroup\$ You don't seem to understand addressables very well. One of the biggest bonuses is that they'll handle complex dependency chains for you whose overhead can be analyzed/debugged via a built-in profiler. And can also be easily grouped to segregate assets for different editions of a game, for example. Maybe you don't see the benefits because you're using an incredibly low number of assets in your projects, but when dealing with hundreds or thousands of assets that you may want to update at any time without having to ship an entirely new build, it's extremely beneficial. \$\endgroup\$
    – arkon
    Commented Sep 24, 2022 at 21:21

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .