プレファブからゲームオブジェクトを作成(Addressable)

2024年12月11日

Unityのアセット管理は、プロジェクトの規模が大きくなるほど複雑さを増します。特に、リソースのロードやインスタンス化において、効率的で柔軟な方法を求める開発者にとって、Addressables は非常に重要なツールです。その中でも、InstantiateAsync メソッドは、非同期的にオブジェクトを生成するための強力な機能を提供します。本記事では、InstantiateAsync の基本的な使い方から、実際の開発現場で活用するためのベストプラクティスまでを解説します。これを理解することで、アセット管理の負担を軽減し、よりスムーズな開発を実現する一助となるでしょう。

インスタンスを作成するためのプレファブをアプリのコードから分離して、ゲームオブジェクトの作成(インスタンス化)できるようにする基本的なサンプルになります

サンプル

単純にプレファブ(標準のカプセルオブジェクトから作成)を対象にしています

シーン

プレファブを作成し、アウトレット接続しています
ここでは、プレファブの作り方は割愛します

実行用のコード

Addressablesからゲームオブジェクトを作成するコードを記述します
今回はコンソール画面に作られたゲームオブジェクトの名前が表示されるようにしました

using UnityEngine;
using UnityEngine.AddressableAssets;

public class PrefabSample : MonoBehaviour
{
    [SerializeField]
    AssetReference prefab;

    void Start()
    {
        Addressables.InstantiateAsync(prefab).Completed += obj =>
        {
            Debug.Log(obj.Result.name);
        };
    }
}

置き換えもできます

Addressables.InstantiateAsync(prefab)

のところを

prefab.InstantiateAsync()

実行結果

ゲームオブジェクトがヒエラルキーウィンドウに表示され、コンソールには、名前が表示されるのを確認します

Addressable

Posted by hidepon