Add custom label to addressables group

Hello,

I’d like to add custom labels to some entries inside of localization assets/strings groups to have more control when downloading bundles from remote.

However, all groups used by Localization package seem to be read-only. How can I add custom labels?

You can remove the read only flag by editing the group asset. You may need to switch the inspector to debug mode to see the field.

Thanks, @karl_jones !

Unchecking the flag makes a group editable, but all entries inside of it remain read-only. I.e. can’t rename or change labels.

Restarting Unity didn’t help.

Oh looks like they changed things since I last did that.
It seems they now also have a readonly flag on each entry. You can do the same and go and remove it. Its in the field called Serialize Entries.

It seems to work, thank you!

If anyone has thousands of entries like we do, here is an Editor tool I used to remove “ReadOnly” label from all entries in a group.

using UnityEditor;
using UnityEditor.AddressableAssets.Settings;
using UnityEngine;

public class ReadonlyRemover : EditorWindow
{
    private AddressableAssetGroup _addressableAssetGroup;

    [MenuItem("Window/Readonly Remover")]
    public static void ShowWindow()
    {
        GetWindow<ReadonlyRemover>("Readonly Remover");
    }

    private void OnGUI()
    {
        EditorGUILayout.LabelField("AddressableAssetGroup Readonly Remover", EditorStyles.boldLabel);

        EditorGUILayout.Space();

        _addressableAssetGroup = (AddressableAssetGroup)EditorGUILayout.ObjectField("Addressable Asset Group",
            _addressableAssetGroup, typeof(AddressableAssetGroup), false);

        if (GUILayout.Button("Remove Readonly Flag"))
        {
            if (_addressableAssetGroup != null)
            {
                RemoveReadonlyFlag();
            }
            else
            {
                Debug.LogError("AddressableAssetGroup is null. Please assign an AddressableAssetGroup.");
            }
        }
    }

    private void RemoveReadonlyFlag()
    {
        foreach (var entry in _addressableAssetGroup.entries)
            entry.ReadOnly = false;

        EditorUtility.SetDirty(_addressableAssetGroup);
        AssetDatabase.SaveAssets();
        AssetDatabase.Refresh();
        Debug.Log("Readonly flags have been removed.");
    }
}