UnityでPrefabを実行中に取得してインスタンス作成する方法

はじめに

Unityでゲームを作っていると「同じキャラクターやアイテムを何度も生成したい」と思う場面が多くあります。そのときに使うのが Prefab(プレハブ) です。Prefabは「ゲームオブジェクトの設計図」のようなもので、実行中に呼び出して複製(インスタンス化)できます。

この記事では、UnityでPrefabを実行中に取得してインスタンス作成する方法を3つのレベルに分けて解説します。

  1. Inspectorからアサインする方法(初学者向け・基本形)
  2. Resources.Loadを使う方法(動的ロード)
  3. Addressablesを使う方法(実務向け)

1. InspectorからPrefabをアサインして生成する方法

手順

  1. ProjectビューでPrefabを作成しておきます(例: Player.prefab)。
  2. スクリプトに public または [SerializeField] フィールドを用意します。
  3. InspectorにPrefabをドラッグ&ドロップしてアサインします。
  4. Instantiateメソッドで生成します。

コード例

using UnityEngine;

public class Example : MonoBehaviour
{
    [SerializeField] GameObject prefab;  // Inspectorからアサイン

    void Update()
    {
        if (Input.GetKeyDown(KeyCode.Space))
        {
            // プレイヤーの位置にPrefabを生成
            Instantiate(prefab, transform.position, Quaternion.identity);
        }
    }
}

メリット / デメリット

✅ 簡単に使える。初心者に最適。

❌ 事前にInspectorでアサインが必要。


2. Resources.Loadで実行時にPrefabをロードする方法

手順

  1. Assets フォルダに Resources フォルダを作成します。
  2. その中にPrefabを入れます(例: Assets/Resources/MyPrefab.prefab)。
  3. Resources.Loadで文字列指定してPrefabをロードします。

コード例

using UnityEngine;

public class Example : MonoBehaviour
{
    void Start()
    {
        // "Assets/Resources/MyPrefab.prefab" をロード
        GameObject prefab = Resources.Load<GameObject>("MyPrefab");
        Instantiate(prefab, new Vector3(0, 0, 0), Quaternion.identity);
    }
}

メリット / デメリット

✅ コードから自由にPrefabを取得できる。

❌ Resourcesは大規模プロジェクトでは非推奨。管理が難しい。


3. Addressablesを使う方法(推奨・大規模向け)

Unity公式が推奨しているアセット管理方法です。大規模プロジェクトやオンライン配信に向いています。

手順

  1. Package Managerから Addressables をインストール。
  2. Prefabを右クリック → Addressables → Make Addressable を選択。
  3. スクリプトからアドレス指定で呼び出します。

コード例

using UnityEngine;
using UnityEngine.AddressableAssets;

public class Example : MonoBehaviour
{
    [SerializeField] AssetReference prefabReference;

    void Start()
    {
        // 非同期でインスタンス生成
        prefabReference.InstantiateAsync(Vector3.zero, Quaternion.identity);
    }
}

メリット / デメリット

✅ シーンやアセットバンドルをまたいでロード可能。

✅ モバイルやオンラインゲーム向けに最適。

❌ 初学者にはやや複雑。


まとめ

  • 小規模・学習用途 → Inspectorからアサインして Instantiate
  • 実行時に柔軟にロードしたい → Resources.Load
  • 実務・大規模開発 → Addressables

👉 学習の流れとしては、まず Inspectorでのアサイン → Resources.Load → Addressables の順に進めるのがおすすめです。


訪問数 5 回, 今日の訪問数 5回

Addressable,Prefab,Unity

Posted by hidepon