🛠️

【Unity】addressablesでPrefabをロードして生成する

2023/09/01に公開

Prefabを動的にロードして生成する方法です。

前提:AddressablesをPackageManagerからインポートする

  1. PrefabのAddressable項目にチェックを入れる

  2. コピーする

  3. 以下のコードで動的に生成。

using System.Collections.Generic;
using UnityEngine;
using UnityEngine.AddressableAssets;
using UnityEngine.ResourceManagement.AsyncOperations;

    public async void Load()
    {
        // AddressablesでPrefabを非同期でロード
        AsyncOperationHandle<GameObject> prefabHandle = Addressables.LoadAssetAsync<GameObject>("Assets/Prefabs/Card/Mummy_Card.prefab");
        await prefabHandle.Task;
        // ロードが完了したらPrefabを生成
        if (prefabHandle.Status == AsyncOperationStatus.Succeeded)
        {
            GameObject prefabInstance = Instantiate(prefabHandle.Result);
            // parentTransformが指定されていない場合、Prefabはワールド座標に生成されます。
        }
    }

生成位置も指定するなら指定する必要あり

参考になるサイト↓
https://robamemo.hatenablog.com/entry/2021/01/08/195415#サンプルコードコルーチンを使って読み込み完了を待つ

Discussion