Unity/Addressable/複数ロード
提供: 初心者エンジニアの簡易メモ
準備
複数まとめてロードするには、Labelsの機能を使う
- Unityメインメニュー/Window/Asset Management/Addressables/Groupsを選択
- ロードしたいオブジェクトのLabels部分にラベル名を追加(例:"TestLabel")
サンプル
using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.AddressableAssets; using UnityEngine.ResourceManagement.AsyncOperations; using UnityEngine.UI; public class AssetLabelsLoadScene : MonoBehaviour { [SerializeField] Button clearButton; [SerializeField] Button loadButton; [SerializeField] Button unloadButton; [SerializeField] GameObject canvas; IList<GameObject> instances; IList<GameObject> list; void Start() { clearButton.onClick.AddListener(() => { Caching.ClearCache(); }); loadButton.onClick.AddListener(() => { if (instances == null) { instances = new List<GameObject>(); StartCoroutine(Load()); } }); unloadButton.onClick.AddListener(() => { foreach (var instance in instances) { Destroy(instance); Addressables.ReleaseInstance(instance); // 破棄 } instances = null; }); } IEnumerator Load() { var handle = Addressables.LoadAssetsAsync<GameObject>("TestLabel", null); yield return handle; if (handle.Status == AsyncOperationStatus.Succeeded) { list = handle.Result; foreach (var value in list) { Debug.Log(value.name); var instance = Instantiate(value, canvas.transform); instances.Add(instance); } } } }
実行に失敗する場合は、Addressablesを再ビルドしてるか確認する