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]
で指定したAssetReferenceMode
がResource
のとき、UI Catalog
に直接アセットの実体が含まれ、ビルドされます。
この場合、UI Catalog
をロードすると全てのUIアセットがメモリ上に展開されることになり、UIアセットを多く使用するプロジェクトではメモリ使用量がボトルネックになることが考えられます。Addressables UI Loader
を通すことで、必要になった場合だけUIアセットをメモリ上にロードすることができるようになり、これらを回避することができます。
次の画像はAddressables UI Loader
にダイアログのUIを登録し、表示/非表示を切り替えた時のMemory Profilerの様子です。
Addressables Group Maker
Addressables UI Loader
に対応するAddressablesの設定を行うための専用のツールを用意しています。
メニューバーの Haikara > Addressables > Group Maker Window
からツールを起動することができます。
Addressables Groupを.uxml、.ussごとに作成し、そのエントリとして各UIアセットを追加します。