UnityのAddressablesのラベル機能を使ってアドレスをグループ化する方法をまとめました。
Unity2019.2.10
Addressable1.3.8
Addressablesの基礎知識
この記事ではAddressableアセットシステムのラベル機能についてまとめます。
Addressableの概念や基礎知識についての説明はこの記事では省略しますが、
以下の記事にまとめていますので、必要に応じて参照してください。
ラベル?
ラベルとは、Addressableのアドレスに対して付けられるタグのようなものです。
同じラベルが付いたアセットをまとめて読み込んだり、ダウンロードしたりするために使います。
またラベルはアドレスと違って複数付けられるという特徴があります。
ちなみにですが、UnityのラベルとAddressableのラベルは別物なので注意が必要です。
ラベルを付ける
ラベルはAddressables Groupsウィンドウから設定します。
まずWindow > Asset Management > Addressables > Groups
からウィンドウを開きます。
ラベルを付けるにはLabelsのドロップダウンをクリックします。
まだラベルを作っていないので、Manage Labelsをクリックしてラベル管理ウィンドウを開きます。
ウィンドウが開いたら適当にラベルを作っておきます。
あとはこれを適当なアドレスに設定します。
ラベルを使う
それではこのラベルを使ってアセットをロードしてみます。
using UnityEngine; using UnityEngine.AddressableAssets; public class Example : MonoBehaviour { private async void Start() { var handle = Addressables.LoadAssetsAsync<Object>("ExampleLabel", null); await handle.Task; foreach (var item in handle.Result) { Debug.Log(item); } } }
これを再生すると、ラベルを付けたアセットがすべてロードされることが確認できます。
また、AssetLabelReferenceを使うとInspectorからラベルを指定することもできます。
using UnityEngine; using UnityEngine.AddressableAssets; public class Example : MonoBehaviour { [SerializeField] private AssetLabelReference _labelReference; private async void Start() { var handle = Addressables.LoadAssetsAsync<Object>(_labelReference, null); await handle.Task; foreach (var item in handle.Result) { Debug.Log(item); } } }
注意点
一点、ラベルとアドレスの意図しない名前被りには注意が必要です。
上述のようにAddressables.LoadAssetsAsync()
のインターフェースは
ラベルを指定する場合とアドレスを指定する場合で変わらないため、
もしラベルと同名のアドレスがある場合にはそのアドレスもロード対象となってしまいます。