initial commit

This commit is contained in:
Jo 2025-01-07 02:06:59 +01:00
parent 6715289efe
commit 788c3389af
37645 changed files with 2526849 additions and 80 deletions

View file

@ -0,0 +1,115 @@
---
uid: addressables-asset-hosting-services
---
# Asset Hosting Services
## Overview
Hosting Services is a development tool that provides an integrated facility for using Addressable Assets configuration data to serve packed content to local or network-connected application builds from within the Unity Editor. Hosting Services can improve iteration velocity when testing packed content and can also serve content to connected clients on local and remote networks.
### Packed mode testing and iteration
Moving from Editor Play mode testing to platform application build testing introduces complexities and time costs to the development process. Hosting Services provide extensible Editor-embedded content delivery services that map directly to your Addressables group configuration. Using a custom Addressables profile, you can configure your application to load all content from the Unity Editor itself. This includes builds deployed to mobile devices, or any other platform, that have network access to your development system.
## Setup
This article details the initial setup of Asset Hosting Services for your project. While the setup guide focuses on Editor workflows, you can use the API to configure Hosting Services by setting the [HostingServicesManager] property of the [AddressableAssetSettings] class.
### Configuring a new Hosting Service
Use the **Hosting window** to add, configure, and enable new Hosting Services. In the Editor, select **Window** > **Asset Management** > **Addressables** > **Hosting**, or click the **Tools** > **Window** > **Hosting Services** button from the **Addressables Groups** window menu to access the **Addressables Hosting** window.
![The Addressables Hosting window.](../images/HostingServicesWindow_1.png)</br>
_The **Addressables Hosting** window._
To add a new Local Hosting Service, click the **Create** > **Local Hosting** button.
![Adding a new Hosting Service.](../images/HostingServicesAddService_1.png)</br>
_Adding a new Hosting Service._
**Note**: For more information on implementing custom hosting service types, see the section on [custom services].
The newly added service appears in the **Hosting Services** section of the **Addressables Hosting** window. Use the **Service Name** field enter a name for the service.
The new service defaults to the disabled state. To start the service, select the **Enable** check box.
![The updated Addressables Hosting window after adding a service.](../images/HostingServicesWindow_2.png)</br>
_The updated **Addressables Hosting** window after adding a service._
The HTTP Hosting Service automatically assigns a port number when it starts. The service saves the port number and reuses it between Unity sessions. To choose a different port, either assign a specific port number in the **Port** field, or click the **Reset** button to assign a different, random port number.
In Editor versions 2022.1 and above, HTTP downloads are disallowed by default. In order for the default `HTTPHostingService` to work correctly, you need to set the **Allow downloads over HTTP** setting in **Edit** > **Project Settings...** > **Player** > **Other Settings** > **Allow downloads over HTTP** to something other than **Not allowed**.
> [!WARNING]
> If you reset the port number, you must execute a full application build to generate and embed the correct URL.
> [!NOTE]
> You may need to disable your local firewall or add exceptions to allow connections from mobile or other devices.
The HTTP Hosting Service is now enabled and ready to serve content from the directory specified in the remote [BuildPath] of each asset group.
### Hosting Service profile setup
When working with Hosting Services during development, consider creating a profile that configures your asset groups to load from the Hosting Service. For more about profiles, see [Addressable Assets Profiles].
Once in the **Addressables Profiles** window, create a new profile via **Create** > **Profile**. In the following example, the new profile is called "Editor Hosted".
Modify the remote loading URL to load from the Hosting Service. From the **Addressables Hosting** window, you can use the fields named `[PrivateIpAddress]` and `[HostingServicePort]` in the remote __LoadPath__ variable to construct the path URL (for example, `http://[PrivateIpAddress]:[HostingServicePort]`).
![Configuring the service's profile.](../images/HostingServicesProfiles_2.png)</br>
_Configuring the service's profile._
Verify that each group is configured correctly. Ensure that you set the [BuildPath] and [LoadPath] paths to their respective profile keys that you modified for use with Hosting Services. In this example, you can see how the profile variables in the [LoadPath] should be expanded to build a correct base URL for loading assets from Hosted Services.
![Inspecting the service's load paths.](../images/HostingServicesGroups_1.png)</br>
_Inspecting the service's load paths._
> [!TIP]
> Use the __Path Preview__ to verify that the profile variables resolve to the correct variables. The load path URL IP address and port must match those shown for the service on the __Addressables Hosting__ window.
Finally, select the new profile from the **Addressables Groups** window, create a build, and deploy to the target device. The Unity Editor now serves all load requests from the application through the [HttpHostingService] service. You can now make additions and changes to content without redeployment. Rebuild the Addressable content, and relaunch the already deployed application to refresh the content.
![Selecting a Hosting Service profile.](../images/HostingServicesProfiles_3.png)</br>
_Selecting a Hosting Service profile._
### Batch mode
You can also use Hosting Services to serve content from the Unity Editor running in batch mode. To do so, launch Unity from the command line with the following options:
```
-batchMode -executeMethod UnityEditor.AddressableAssets.HostingServicesManager.BatchMode
```
This loads the Hosting Services configuration from the default [AddressableAssetSettings] object, and starts all configured services.
To use an alternative [AddressableAssetSettings] configuration, create your own static method entry point, to call through the [HostingServicesManager.BatchMode(AddressableAssetSettings settings)] overload.
<a name="custom-services"></a>
## Custom services
You can create a custom service to implement your own logic for serving content-loading requests from the Addressable assets system. For example:
* Support a custom [IResourceProvider] that uses a non-HTTP protocol for downloading content.
* Manage an external process for serving content that matches your production CDN solution (such as an Apache HTTP server).
### Implementing a custom service
The [HostingServicesManager] can manage any class that implements an [IHostingService] interface (for more details on method parameters and return values, see the [API documentation].
To create a new custom service:
1. Follow the steps outlined in the [configuring a new Hosting Service] section above, but instead of selecting **Create** > **Local Hosting** button, select **Create** > **Custom Service** button instead.
2. Drag the applicable script into its field, or select it from the object picker. The dialog validates that the selected script implements the [IHostingService] interface.
3. To finish adding the service, click the **Add** button.
Moving forward, your custom service will appear in the **Service Type** drop-down options.
![Adding a custom Asset Hosting Service.](../images/HostingServicesAddService_2.png)</br>
_Adding a custom Asset Hosting Service._
[Addressable Assets Profiles]: xref:addressables-profiles
[AddressableAssetSettings]: xref:UnityEditor.AddressableAssets.Settings.AddressableAssetSettings
[API documentation]: xref:UnityEditor.AddressableAssets.HostingServices.IHostingService
[BuildPath]: xref:UnityEditor.AddressableAssets.Settings.GroupSchemas.BundledAssetGroupSchema.BuildPath
[configuring a new Hosting Service]: #configuring-a-new-hosting-service
[custom services]: #custom-services
[HostingServicesManager.BatchMode(AddressableAssetSettings settings)]: xref:UnityEditor.AddressableAssets.HostingServices.HostingServicesManager.BatchMode(UnityEditor.AddressableAssets.Settings.AddressableAssetSettings)
[HostingServicesManager]: xref:UnityEditor.AddressableAssets.HostingServices.HostingServicesManager
[HttpHostingService]: xref:UnityEditor.AddressableAssets.HostingServices.HttpHostingService
[IHostingService]: xref:UnityEditor.AddressableAssets.HostingServices.IHostingService
[IResourceProvider]: xref:UnityEngine.ResourceManagement.ResourceProviders.IResourceProvider
[LoadPath]: xref:UnityEditor.AddressableAssets.Settings.GroupSchemas.BundledAssetGroupSchema.LoadPath

View file

@ -0,0 +1,185 @@
---
uid: addressables-ccd
---
# Addressable Asset system with Cloud Content Delivery
You can use the [Addressable asset system] in conjunction with [Unity Cloud Content Delivery] \(CCD) to distribute your remote Addressables content.
**Note**: The purpose of this page is to describe how to link the concepts of Addressable Assets to CCD, and isn't meant to be an in-depth discussion of these ideas. Before you read this page, make sure you are familiar with both the Addressable system and Cloud Content Delivery.
To set up Addressable assets to work with CCD:
1. [Configure a profile to include your CCD URL]
2. [Build your AssetBundles, then upload them to CCD]
See [Getting Started] for information about installing and implementing the Addressables package.
See [Upgrading to the Addressables System] for information about integrating Addressables in an existing Unity Project.
See [Remote content distribution] for information on how to set up your Project so that you can host your Addressables content on a remote server.
See [Unity Cloud Content Delivery] for more information about CCD.
## Configure profile with CCD URL
> [!TIP]
> The `BuildPath` and `LoadPath` variables stored in [Profiles] specify where the Addressables system creates your build artifacts and where it looks for your assets at runtime. Configure the remote paths to work with CCD. (Leave the local paths with their standard, default values, unless you have a specific reason to change them.)
If necessary, create a new profile for publishing builds to CCD on the [Profiles] window. Configure the remote path variables in this profile to access your content at the correct URL.
You can set the remote `BuildPath` to a convenient value. If you have multiple profiles, consider using a unique build path for each of them so that the build artifacts do not get mixed together, especially if you are hosting them from a different remote URL.
Set the remote `LoadPath` to one of the following two paths:
* If you publish content using a badge:
```c#
https://(ProjectID).client-api.unity3dusercontent.com/client_api/v1/environments/(EnvironmentName)/buckets/(BucketID)/release_by_badge/(BadgeName)/entry_by_path/content/?path=
```
* If you publish using a release:
```c#
https://(ProjectID).client-api.unity3dusercontent.com/client_api/v1/environments/(EnvironmentName)/buckets/(BucketID)/releases/(ReleaseID)/entry_by_path/content/?path=
```
where:
* `(ProjectID)` is your CCD project's ID string
* `(EnvironmentName)` is the name of the Environment of your project
* `(BucketID)` is the Bucket ID string for a CCD bucket within your project
* `(ReleaseID)` is the ID of a specific release within a bucket
* `(BadgeName)` is the name of the specific CCD badge
See [Profiles] for information about how to create and edit profiles.
> [!IMPORTANT]
> You must perform a full rebuild your Addressables content when you change the remote load path.
<a name="ccd-bundle-location"></a>
### Using the Cloud Content Delivery Bundle Location Option in a Profile
If your project is set up to use the [Unity Cloud Content Delivery] service, you can set the profile's remote path pair to publish content to a designated bucket and badge.
> [!Important]
> This feature requires the Content Delivery Management API package.
To set up a Profile variable to use the CCD bundle location:
1. Open the Profile window (menu: __Window > Asset Management > Addressables > Profiles__).
2. Select the profile to change.
3. Change the __Remote__ variable to use the __Cloud Content Delivery__ __Bundle Location__.
<br/>![](../images/addr_ccd_profiles_option.png)<br/>*Cloud Content Delivery Bundle Location Option*
4. Choose `Automatic (set using CcdManager)` or `Specify the Environment, Bucket, and Badge` option
<br>![](../images/addr_ccd_profiles_option_2.png)<br/>*Cloud Content Delivery Bundle Location Option 2*
> [!Note]
> The CcdManager is a static class that is used to notify Addressables which Environment, Bucket, and Badge to load from at Runtime. See [CcdManager].
* If choosing Automatic, select the environment you wish to use
<br>![](../images/addr_ccd_profiles_automatic_env.png)<br/>*Cloud Content Delivery Bundle Location Automatic Environment Option*
* If choosing to specify, select the environment you wish to use
<br>![](../images/addr_ccd_profiles_env.png)<br/>*Cloud Content Delivery Bundle Location Environment Option
5. Choose the Bucket to use.
<br/>![](../images/addr_ccd_profiles_buckets.png)<br/>*Cloud Content Delivery Bundle Location Bucket Option*
> [!Note]
> If no buckets are present, you will be shown this window before continuing.
> <br/>![](../images/addr_ccd_profiles_nobucket.png)<br/>*Cloud Content Delivery Bundle Location No BucketOption*
6. Choose the Badge.
<br/>![](../images/addr_ccd_profiles_badges.png)<br/>*Cloud Content Delivery Bundle Location Badge Option*
Make this the active profile when building content for delivey with CCD.
See [Profiles] for information about how to modify profiles.
## Configure groups with CCD URL
Configure groups to use __Remote__ as their __Build & Load Path__ in the inspector window.
![](../images/addr_ccd_groups_remote.png)<br/>*Group Build & Load Paths*
See [Groups] for information about how to modify groups.
<a name="build-upload-release"></a>
## Build, upload and release Addressable content
### Using to CCD Dashboard/CLI
To generate and upload Addressable content to your CCD project:
1. Set the profile you have set up for CCD as the active profile.
2. Build your Addressables content.
* If you are making a full content build, see [Building your Addressable content].
* If your are updating an existing build with modified remote content, see [Building for content updates].
3. Upload the files created at the remote build path using the [CCD dashboard] or [command-line interface].
4. Create a release and update the badge using the [CCD dashboard] or [command-line interface].
Building your Addressable content generates a content catalog (.json), a hash file (.hash), and one or more AssetBundle (.bundle) files. Upload these files to the bucket corresponding to the URL used in your profile load path.
If you have made changes to local content, you must create a new Player build.
If you are using the Unity Cloud Build service, you can configure your cloud builds to send content to CCD. See [Using Addressables in Unity Cloud Build] for information.
### Using CCD Management package
To generate, upload, and release Addressable content to your CCD project:
1. Open the Groups window (menu: __Window > Asset Management > Addressables > Groups__).
2. Use the __Build & Release__ option.
The CCD Management package will use the default build script behavior to generate the Addressable bundles.
Then, all groups associated with a path pair that is connected to a CCD bucket and badge via the drop-down window will have their generated bundles uploaded by the management package to those remote target.
Finally, the management package will a create release for those remote target and update their badge.
<br/>![](../images/addr_ccd_build_and_release.png)<br/>*Build & Release option*
<a name="ccd-manager"></a>
#### CcdManager
When setting up the project profile path pairs and utilizing CCD, there is an option to use `Automatic`. This option utilizes the `CcdManager` to set static properties at Runtime to tell Addressables which Environment, Bucket, and Badge to reach out to for loading assets. The `CcdManager` has 3 main properties: `EnvironmentName`, `BucketId`, and `Badge`. Setting these properties at runtime before Addressables initializes will tell Addressables to look at these locations within CCD. To learn more about environments, buckets, and badges see [CCD organization].
Example Snippet of setting CcdManager Properties:
```c#
CcdManager.EnvironmentName = ENV_NAME;
CcdManager.BucketId = BUCKET_ID;
CcdManager.Badge = BADGE;
// Addressables call to load or instantiate asset
```
>[!Note]
> ANY Addressables call initializes the system so be sure to set the `CcdManager` prior to any Addressables call to ensure that there are no race conditions or unexpected behaviors.
### Using Build Events
CCD provides a means of wrapping the build and upload service to provide additional functionality.
#### Adding a build event
You can add additional events to PreUpdate and PreBuild event chains.
[!code-cs[sample](../../Tests/Editor/DocExampleCode/PrintBucketInformation.cs#SAMPLE)]
#### Disabling version override warnings
If you are getting warnings about overriding the player version and would like to keep your current setup, you can disable the warnings by removing the corresponding build events.
[!code-cs[sample](../../Tests/Editor/DocExampleCode/DisableBuildWarnings.cs#SAMPLE)]
[Getting Started]: xref:addressables-getting-started
[Upgrading to the Addressables System]: xref:addressables-migration
[Remote content distribution]: xref:addressables-remote-content-distribution
[Profiles]: xref:addressables-profiles
[default values]: xref:addressables-profiles#default-path-values
[Addressable Asset system]: xref:addressables-home
[Asset Hosting Services]: ./AddressableAssetsHostingServices.md
[AssetBundles]: xref:AssetBundlesIntro
[Build your AssetBundles, then upload them to CCD]: #build-upload-release
[Building for content updates]: ../editor/building-content/ContentUpdateWorkflow.md#building-content-updates
[Building your Addressable content]: xref:addressables-building-content
[Configure a profile to include your CCD URL]: #configure-profile-with-ccd-url
[Marking assets as Addressable]: xref:addressables-getting-started#making-an-asset-addressable
[Unity Cloud Content Delivery]: https://docs.unity.com/ccd/UnityCCD.html
[Using Addressables in Unity Cloud Build]: xref:UnityCloudBuildAddressables
[Groups]: xref:addressables-groups
[CCD dashboard]: https://docs.unity.com/ccd/Content/UnityCCDDashboard.htm
[command-line interface]: https://docs.unity.com/ccd/Content/UnityCCDCLI.htm
[CcdManager]: #ccd-manager
[CCD organization]: https://docs.unity.com/ccd/UnityCCD.html#CCD_organization

View file

@ -0,0 +1,168 @@
---
uid: addressables-remote-content-distribution
---
# Remote content distribution
Distributing content remotely can reduce initial app download size and install time. You can also update remotely distributed assets without republishing your app or game
When you assign a remote URL as the Load Path of a group, the Addressables system loads assets in the group from that URL. When you enable the Build Remote Catalog option, Addressables looks up the addresses of any remote assets in the remote catalog, allowing you to make changes to Addressable assets without forcing users to update and reinstall the entire game or application.
After [enabling remote distribution], you can build your content in two ways:
* A full [content build] using the __New Build > Default Build Script__: builds all content bundles and catalogs. Always perform a full build before rebuilding your player when preparing to publish or update your full application.
* A [content update build] using the __Update a Previous Build__ script: builds all content bundles and catalogs, but sets up the remote catalog so that installed applications only need to download the changed bundles. Run the __[Check for Content Update Restrictions]__ tool to identify changes and prepare your groups before building an update.
After building a full build or an update, you must upload your remote catalog, catalog hash file, and remote bundles to your hosting service.
See [Using Profiles to aid development] for tips on setting up Addressables Profiles to help you develop, test, and publish remote content.
## Enabling remote distribution
To enable remote distribution of your content, you must enable the remote catalog and set up the groups containing the assets you want to host remotely.
### Enabling the remote catalog
Enable the remote catalog in your __Addressable Asset Settings__ Inspector (menu: __Window > Asset Management > Addressables > Settings__).
* __Build Remote Catalog__: enabled
* __Build & Load Paths__: Remote
![](../images/addr_rcd_0.png)<br/>*Enabling the remote catalog*
The catalog and its accompanying hash file are built to the folder specified by the __Build Path__ setting. You must upload these files so that they can be accessed at the URL specified by your __Load Path__ setting. Unless you have a specific reason not to, use the __Remote__ location so that the catalog is built to and loaded from the same paths as your remote bundles.
### Setting up a remote group
To set up a group so that the assets in it can be hosted remotely, set the __Build & Load Paths__ using the __Remote__ location:
![](../images/addr_rcd_1.png)
If you plan to publish content updates between publishing full rebuilds of your application, set the __Update Restriction__ value according to how often you expect to update content in a group.
Choose __Cannot Change Post Release__ for groups that produce larger bundles, especially if you do not anticipate changing most of the assets in the group. If you do change assets in a group with this setting, the Addressables tools move the changed assets to a new group for the update. Only the new bundles are downloaded by installed applications.
Choose __Can Change Post Release__ for groups containing assets that you expect to change frequently. If you change assets in a group with this setting, the bundles containing those assets are rebuilt as a whole and will be redownloaded by installed applications. To reduce the amount of data that needs to be downloaded after an update, try to keep the bundles produced by groups with this setting as small as possible.
See [Content update builds] for more information about updating remote content.
The __Advanced Options__ section contains some options that affect remote hosting and downloads (but aren't necessary to enable remote hosting). See [Advanced Options] for more information.
## Using Profiles to aid development
A [Profile] defines variables that you can use to set the build and load paths for both your local and remote content.
When you distribute content remotely, you typically need to set different URLS (load paths) for your remote content depending on why you are making a build. Some examples of such situations include:
__Builds for testing general game play and function__
Early in development or when you need to test without access to a host, you might find it convenient to treat all your content as local content. For this situation set the __Local__ and __Remote__ profile variables using the __Built-In__ location.
![](../images/addr_rcd_2.png)
*All content treated as local*
__Builds for local hosting__
Later, when you set up a host on your local network (or localhost), you will need to change the Load Path for your remote groups to reflect the URL of the host. For example if using [Editor Hosting], set the __Remote__ profile variable using the __Editor Hosting__ location.
![](../images/addr_rcd_3.png)
*Remote content served from Editor Hosting*
__Builds for CDN__
As you get closer to production, you might use a staging server and then, your production Content Delivery Network (CDN). For example if using [Cloud Content Delivery], set the __Remote__ profile variable using the __Cloud Content Delivery__ location.
![](../images/addr_rcd_4.png)
*Remote content hosted on the Unity Cloud Content Delivery service*
__Other__
Even after release, you might want to use different host URLs for beta testing or other purposes.
Rather than hand configuring the build and load paths every time you build, you can create a different Profile and set the variables appropriately. Then, you can easily switch between Profiles before making a content build without worrying about misconfiguring the paths.
If you use a script to launch your content builds, then you can use the Addressables API to choose a specific Profile for a build. See [Starting an Addressables build from a script].
If you have complex URLs, you can reference static fields or properties in your Profile variables that are evaluated at build- or runtime. For example, rather than entering your CCD ProjectID as a string, you could create an Editor class that provides the information as a static property and reference it as, [CCDInfo.ProjectID]. See [Profile variable syntax] for more information. ([InternalIdTransformFunc] functions provide an additional method of handling complex URL requirements.)
> [!NOTE]
> If your remote URL requires cannot be expressed as a static string see [Custom URL evaluation] for information about how you can rewrite the URL for assets, including AssetBundles, at runtime.
## AssetBundle caching
By default, AssetBundles produced for an Addressables build are cached on the client device after they are downloaded. Cached bundles are only downloaded again if they are updated or if they are deleted from the cache.
An updated catalog can exclude bundle entries present in an older version of the catalog. When these entries are cached, their data is no longer needed on the device.
When you have unneeded cache data on the device, you can choose one of three options:
* To delete the entire bundle cache, use [Caching.ClearCache].
* To remove cache entries that are no longer referenced at any time, use [Addressables.CleanBundleCache]. You usually call this function after initializing Addressables (see [Customizing Addressables initialization]) or after loading additional catalogs (see [Managing catalogs at runtime]).
* To automatically call [Addressables.CleanBundleCache] after updating catalogs, use the parameter `autoCleanBundleCache` in [Addressables.UpdateCatalogs]. See [Checking for content updates at runtime] for an example script.
If you disable caching for a group, the remote bundles produced for the group are stored in memory when they are downloaded until you unload them or the application exits. The next time the application loads the bundle, Addressables downloads it again.
You can control whether the bundles produced by a group are cached or not with the __Use Asset Bundle Cache__ setting under [Advanced Options] in the Group Inspector.
See [AssetBundle compression] for additional information about AssetBundle caching. The Addressables system sets the cache-related parameters of the [UnityWebRequests] it uses to download Addressable bundles based on the group settings.
Note that there are some limitations for WebGL AssetBundles. For more information, see [Building and running a WebGL project].
## Pre-downloading remote content
In situations where you want to predownload content so that it is cached on disk and faster to access when the application needs it, you can use the [Addressables.DownloadDependenciesAsync] method. This method downloads an Addressable entity and any dependencies as a background task.
Calling the [Addressables.DownloadDependenciesAsync] method loads the dependencies for the address or label that you pass in. Typically, this is the AssetBundle.
The [AsyncOperationHandle] struct returned by this call includes a PercentComplete attribute that you can use to monitor and display download progress. You can also have the app wait until the content has loaded.
### Regarding PercentComplete
PercentComplete takes into account several aspects of the underlying operations being handled by a single AsyncOperationHandle. There may be instances where the progression isn't linear, or some semblance of linear. This can be due to quick operations being weighted the same as operations that will take longer.
For example, given an asset you wish to load from a remote location that takes a non-trivial amount of time to download and is reliant on a local bundle as a dependency you'll see your PercentComplete jump to 50% before continuing. This is because the local bundle is able to be loaded much quicker than the remote bundle. However, all the system is aware of is the need for two operations to be complete.
If you wish to ask the user for consent prior to download, use [Addressables.GetDownloadSize] to return how much space is needed to download the content from a given address or label. Note that this takes into account any previously downloaded bundles that are still in Unity's AssetBundle cache.
While it can be advantageous to download assets for your app in advance, there are instances where you might choose not to do so. For example:
* If your app has a large amount of online content, and you generally expect users to only ever interact with a portion of it.
* You have an app that must be connected online to function. If all your app's content is in small bundles, you might choose to download content as needed.
Rather than using the percent complete value to wait until the content is loaded, you can use the preload functionality to show that the download has started, then continue on. This implementation would require a loading or waiting screen to handle instances where the asset has not finished loading by the time it's needed.
## Custom URL evaluation
There are several scenarios where you might need to customize the path or URL of an Asset (an AssetBundle generally) at runtime. The most common example is creating signed URLs. Another is dynamic host determination.
See [ID transform function] for more information.
[Addressables.CleanBundleCache]: xref:UnityEngine.AddressableAssets.Addressables.CleanBundleCache*
[Addressables.DownloadDependenciesAsync]: xref:UnityEngine.AddressableAssets.Addressables.DownloadDependenciesAsync*
[Addressables.GetDownloadSize]: xref:UnityEngine.AddressableAssets.Addressables.GetDownloadSize*
[Addressables.UpdateCatalogs]: xref:UnityEngine.AddressableAssets.Addressables.UpdateCatalogs(System.Boolean,System.Collections.Generic.IEnumerable{System.String},System.Boolean)
[Advanced Options]: xref:addressables-content-packing-and-loading-schema#build-and-load-paths
[AssetBundle compression]: xref:AssetBundles-Cache
[AsyncOperationHandle]: xref:UnityEngine.ResourceManagement.AsyncOperations.AsyncOperationHandle
[Building and running a WebGL project]: xref:webgl-building#AssetBundles
[CacheInitializationSettings]: xref:UnityEditor.AddressableAssets.Settings.CacheInitializationSettings
[Caching.ClearCache]: xref:UnityEngine.Caching.ClearCache
[Checking for content updates at runtime]: xref:addressables-content-update-builds#checking-for-content-updates-at-runtime
[Cloud Content Delivery]: xref:addressables-ccd
[content build]: xref:addressables-builds
[content update build]: xref:addressables-content-update-builds
[Content update builds]: xref:addressables-content-update-builds
[Customizing Addressables initialization]: xref:addressables-api-initialize-async
[Custom URL evaluation]: xref:addressables-api-transform-internal-id
[Editor Hosting]: xref:addressables-asset-hosting-services
[enabling remote distribution]: #enabling-remote-distribution
[Managing catalogs at runtime]: xref:addressables-api-load-content-catalog-async
[Profile variable syntax]: xref:addressables-profile-variables#profile-variable-syntax
[Profile]: xref:addressables-profiles
[Starting an Addressables build from a script]: xref:addressables-api-build-player-content#starting-an-addressables-build-from-a-script
[Using Profiles to aid development]: #using-profiles-to-aid-development
[Check for Content Update Restrictions]: xref:addressables-content-update-builds#check-for-content-update-restrictions-tool
[InternalIdTransformFunc]: xref:addressables-api-transform-internal-id
[AddressableAssetSettings]: xref:addressables-asset-settings
[UnityWebRequests]: xref:UnityEngine.Networking.UnityWebRequest
[ID transform function]: xref:addressables-api-transform-internal-id