Asset Hosting Services
Overview
Hosting Services provide 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 are designed to improve iteration velocity when testing packed content, and can also be used to 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 quickly 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.
Turn-key content server
You can deploy Asset Hosting Services into a server environment by running in batch mode (headless) to host content for both intranet- and internet-facing Unity application clients.
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 > Hosting Services button from the Addressables Groups window menu to access the Hosting window.
The Addressables Hosting window.
To add a new Local Hosting Service, click the Create > Local Hosting button.
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 initiate the service, select the Enable button.
The updated Addressables Hosting window after adding a service.
The HTTP Hosting Service automatically assigns a port number when it starts. The port number is saved and reused between Unity sessions. To choose a different port, either assign a specific port number in the Port field, or use the Reset button to randomly assign a different port.
Note: If you reset the port number, you must execute a full application build to generate and embed the correct URL.
The HTTP Hosting Service is now enabled and ready to serve content from the directory specified in the BuildPath
of each asset group.
Profile setup
When working with Hosting Services during development, Unity recommends creating a profile that configures all asset groups to load content from the Hosting Service using a directory or directories created specifically for that purpose.
In the Editor, select Windows > Asset Management > Addressables > Profiles, or click the Tools > Profiles button from the Addressables Groups window menu to access the Profiles window. You can also access these settings via the AddressableAssetSettings
Inspector.
Next, create a new profile. In the following example, the new profile is called "Editor Hosted".
Creating a service profile.
Modify the loading path fields to instead load from the Hosting Service. HttpHostingService
is a URL that uses the local IP address and the port assigned to the service. From the Addressables Hosting window, you can use the profile variables named PrivateIpAddress
and HostingServicePort
to construct the URL (for example, http://[PrivateIpAddress]:[HostingServicePort]
).
Additionally, you should modify all build path variables to point to a common directory outside of the Project's Assets folder.
Configuring the service's profile.
Verify that each group is configured correctly. Ensure that the BuildPath
and LoadPath
paths are set to their respective profile keys that are modified for use with Hosting Services. In this example, you can see how the profile variables in the LoadPath
are expanded to build a correct base URL for loading from Hosted Services.
Inspecting the service's load paths.
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.
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 UnityEditor.AddressableAssets.HostingServicesManager.BatchMode(AddressableAssetSettings settings)
overload.
Custom services
Hosting Services are designed to be extensible, allowing you to implement your own custom 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:
- 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.
- Drag and drop the applicable script into its field, or select it from the object picker. The dialog validates that the selected script implements the
IHostingService
interface. - To finish adding the service, click the Add button.
Moving forward, your custom service will appear in the Service Type dropdown options.
Adding a custom Asset Hosting Service.