lime雑記

ゲーム開発、その他雑記。

【Unity】Addressablesのラベル単位での読み込みと解放

この記事でのバージョン

Unity 2021.3.11f1
Addressables 1.19.19

概要

Addressablesでのラベル単位でのリソースの読み込みと解放についてメモ。

前提

読み込み対象リソースの登録として以下の状態にしておく。
(一括で読み込みたいリソースに同じラベルを付けておく)

TestDataは以下のようなScriptableObjectを用意。

[CreateAssetMenu(fileName = "TestData", menuName = "Test/TestData", order = 0)]
public class TestData : ScriptableObject {
  [SerializeField]
  private int _testId;
  public int TestId => _testId;
}
読み込み
public async UniTask Load() {
  var handle = Addressables.LoadAssetsAsync<TestData>("TestLabel", null);
  await handle.Task;
  foreach (var testData in handle.Result) {
    Debug.Log(testData.TestId);
  }
}

Addressables.LoadAssetsAsnyc関数にラベル名を指定して読み込む。
ラベル名と同じアドレスのファイルがあるとそちらも読み込んでしまうので注意。

解放
public void Release() {
  Addressables.Release(_handle);
}

Addressables.Releaseで読み込み時に取得したhandleを渡す。

public void Release() {
  Addressables.Release(_testDataList);
}

もしくは読みこみ時に受け取ったリソースのリストを渡しても可。
(内部でhandleと読み込んだリソースとのDictionaryを保持しているのでそれを利用している)

ラベルなどで複数のリソースを一度に読み込んだ場合は個別に開放ができないので注意。