Customizing Addressables initialization
The Addressables system initializes itself at runtime the first time you load an Addressable or make another call to an Addressable API. Call Addressables.InitializeAsync to initialize Addressables earlier (this function does nothing if initialization has already occurred).
The initialization operation performs the following tasks:
- Sets up the ResourceManager and the ResourceLocators.
- Loads configuration data created by Addressables from StreamingAssets.
- Executes any initialization object operations.
- Loads the content catalog. By default, Addressables first checks for updates to the content catalog and downloads a new catalog if available.
The following Addressables settings can change initialization behavior:
- Only update catalogs manually: Addressables won't automatically check for an updated catalog. See Updating catalogs for information about manually updating your catalogs.
- Build Remote Catalog: Addressables won't attempt to load remote content without a remote catalog.
- Custom certificate handler: identify a custom certificate handler if you need one to access your remote asset hosting service.
- Initialization object list: add IObjectInitializationDataProvider ScriptableObjects to your application that are invoked during the initialization operation.
The following runtime properties should be set before the initialization operation starts:
- Custom URL transform function
- ResourceManager exception handler
- Static properties used for any custom runtime placeholders in your Profile variables
Initialization objects
You can attach objects to the Addressable Assets settings and pass them to the initialization process at runtime. For example, you can create a CacheInitializationSettings object to initialize Unity's Cache settings at runtime. To create your own types of initialization object, create a ScriptableObject that implements the IObjectInitializationDataProvider interface. Use this object to create the ObjectInitializationData asset that Addressables includes with your the runtime data.
Cache initialization objects
Use a CacheInitializationSettings object to initialize Unity's Cache settings at runtime.
To specify the cache initialization settings that the Addressables system should use:
- Create the CacheInitializationSettings asset (menu: Assets > Addressables > Initialization > Cache Initialization Settings).
Select the new asset file in the Project panel to view the settings in the Inspector
Adjust the settings as desired.
- Open the Addressables Settings Inspector (menu: Window > Asset Management > Addressables > Settings).
- In the Initialization Objects section of the Inspector, click the + button to add a new object to the list.
- Select your CacheInitializationSettings asset in the File dialog and click Open.
- The cache settings object is added to the list.
When Addressables initializes at runtime, it applies these settings to the default Unity Cache. The settings apply to all AssetBundles in the default cache, not just those downloaded by the Addressables system. See Caching for more information about the Unity cache system.
Note
Android applications built with Unity 202.1 or earlier or running on Android 9 or earlier can only play videos from uncompressed AssetBundles. You can use a CacheInitializationSettings
object to disable recompression of the cache by disabling the Compress Bundles option.