docs.unity3d.com
    Show / Hide Table of Contents

    AddressableAssetSettings.BuildPlayerContent

    API

    • static void BuildPlayerContent()
    • static void BuildPlayerContent(out AddressablesPlayerBuildResult result)

    Description

    AddressableAssetSettings.BuildPlayerContent() is used to build relevant Addressables data into AssetBundles and the corresponding ContentCatalog. It can be used in custom scripts used to assist in continuous integration/deployment.

    To check for success, use BuildPlayerContent(out AddressablesPlayerBuildResult result). result.Error will contain any error message returned if the Addressables build failed. If string.IsNullOrEmpty(result.Error) is true, the build was successful.

    There are a few pieces of information that BuildPlayerContent takes into consideration when performing the build: the AddressablesDefaultSettingsObject, ActivePlayerDataBuilder, and the content_state.bin.

    The AddressablesDefaultSettingsObject drives which groups get processed and which Addressables profile is used. The profile dictates variables such as local and remote build paths as well as load paths. A default AddressablesDefaultSettingsObject is provided but can be overwritten by setting AddressablesDefaultSettingsObject.Settings to your custom AddressableAssetSettings.

    Ensure the active profile is set to the desired profile ID before performing the build. If, for example, you have a profile you want to use for a continuous integration pipeline called "Custom CI Profile", you can set the active profile using this code snippet,

    AddressableAssetProfileSettings profileSettings = AddressableAssetSettingsDefaultObject.Settings.profileSettings;
    string profileId = profileSettings.GetProfileId("Custom CI Profile");
    AddressableAssetSettingsDefaultObject.Settings.activeProfileId = profileId;
    

    The build is performed using the ActivePlayerDataBuilder, which is determined by a combination of the ActivePlayerDataBuilderIndex and the list of DataBuilders. The list of DataBuilders is comprised of ScriptableObjects, which implement the IDataBuilder interface. A basic example of adding and setting the ActivePlayerDataBuilder would look like this,

    public void AddAndSetActiveDataBuilder(IDataBuilder dataBuilder)
    {
        if (AddressableAssetSettingsDefaultObject.Settings.AddDataBuilder(dataBuilder))
        {
            AddressableAssetSettingsDefaultObject.Settings.ActivePlayerDataBuilderIndex =
                AddressableAssetSettingsDefaultObject.Settings.DataBuilders.Count - 1;
        }
    }
    

    This sample adds the IDataBuilder to the list of DataBuilders and then sets the ActivePlayerDataBuilderIndex to the last index of that list. Other useful methods for manipulating the DataBuilders are RemoveDataBuilder and SetDataBuilderAtIndex.

    It may also be desirable to save content state between builds, typically for use with content build updates. Addressables uses a content_state.bin to save the AssetState into a structure called a CachedAssetState. Retrieval of the .bin file can be done as follows,

    string contentStatePath = ContentUpdateScript.GetContentStateDataPath(false);
    AddressablesContentState contentState = ContentUpdateScript.LoadContentState(contentStatePath);
    //...
    

    and then saving the new content state can be done using ContentUpdateScript.SaveContentState(...).

    Back to top Copyright © 2021 Unity Technologies
    Generated by DocFX
    on 04 November 2021
    Terms of use