Skip to content

Addressables UI Loader

Addressables UI Loader は、Unity の Addressables システムを利用して UIアセット(.uxml,.uss)をロードするためのUI Loaderです。
UIアセットのGuidをアドレスとして扱い、Addressables.LoadAssetAsync<T>でUIアセットのロードを実行します。

csharp
        public override TAsset? Load(CustomUIInfo<TAsset> uiAssetInfo)
        {
            if (_idToHandle.TryGetValue(uiAssetInfo.Id, out var currentHandle))
            {
                return currentHandle.WaitForCompletion();
            }
            
            var handle = Addressables.LoadAssetAsync<TAsset>(uiAssetInfo.Id);
            var result = handle.WaitForCompletion;
            _idToHandle.Add(uiAssetInfo.Id, handle);
            return result;
        }

[HaikaraUI]で指定したAssetReferenceModeResource のとき、UI Catalogに直接アセットの実体が含まれ、ビルドされます。
この場合、UI Catalog をロードすると全てのUIアセットがメモリ上に展開されることになり、UIアセットを多く使用するプロジェクトではメモリ使用量がボトルネックになることが考えられます。
Addressables UI Loaderを通すことで、必要になった場合だけUIアセットをメモリ上にロードすることができるようになり、これらを回避することができます。

次の画像はAddressables UI LoaderにダイアログのUIを登録し、表示/非表示を切り替えた時のMemory Profilerの様子です。 memory-profile-result

Addressables Group Maker

Addressables UI Loaderに対応するAddressablesの設定を行うための専用のツールを用意しています。
メニューバーの Haikara > Addressables > Group Maker Window からツールを起動することができます。
Addressables Groupを.uxml、.ussごとに作成し、そのエントリとして各UIアセットを追加します。