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を再ビルドしてるか確認する