Version: Unity 6.0 (6000.0)
言語 : 日本語
ランタイムでのプレハブのインスタンス化
プレハブを使用した構造体のビルド

プレハブのインスタンス化の概要

ランタイムにプレハブをインスタンス化するには、コードにそのプレハブへの参照が必要です。参照を作成するには、コードに GameObject 型のパブリックフィールドを作成し、Inspector でそのフィールドにプレハブを割り当てます。

以下のスクリプトの例では、パブリック変数 myPrefab を 1 つ使用してプレハブを参照します。Start メソッドでそのプレハブのインスタンスを作成します。

using UnityEngine;
public class InstantiationExample : MonoBehaviour 
{
    // Reference to the Prefab. Drag a Prefab into this field in the Inspector.
    public GameObject myPrefab;

    // This script will simply instantiate the Prefab when the game starts.
    void Start()
    {
        // Instantiate at position (0, 0, 0) and zero rotation.
        Instantiate(myPrefab, new Vector3(0, 0, 0), Quaternion.identity);
    }
}

このサンプルを使用するには、以下を行います。

  1. プロジェクトに新しい MonoBehaviour スクリプトを作成し、InstantiationExample という名前を付けます。
  2. 上記のスクリプト例をコピーして新しいスクリプトに貼り付け、保存します。
  3. メニューから GameObject > Create Empty を使用して、空のゲームオブジェクトを作成します。
  4. 新しい空のゲームオブジェクトにスクリプトをドラッグして、コンポーネントとしてゲームオブジェクトに追加します 。
  5. 任意のプレハブを作成 し、Project ウィンドウ からスクリプトコンポーネントの My Prefab フィールドにドラッグします。
Project ウィンドウからスクリプトコンポーネントの My Prefab フィールドにプレハブをドラッグ
Project ウィンドウからスクリプトコンポーネントの My Prefab フィールドにプレハブをドラッグ

再生モードを開始すると、シーンの (0, 0, 0) 位置にプレハブがインスタンス化されているのが確認できます。

別のプレハブを Inspector ウィンドウの My Prefab フィールドにドラッグすると、スクリプトを変更せずにインスタンス化するプレハブを変更できます。

この最初の例は非常に簡単なので、プレハブを自身でシーンに配置するのと比べ、特に利点はないように見えるかもしれません。ただし、コードを使用してプレハブをインスタンス化できれば、以下の例に示すように、ゲームやアプリケーションの実行中にゲームオブジェクトの複雑な設定を動的に作成する強力な機能が利用できます。

よくあるシナリオ

ランタイムのプレハブのインスタンス化は、以下の一般的なシナリオで役立ちます。

  • さまざまな位置でプレハブを複数回複製することによる、1 つのプレハブからなる構造 (例えば、グリッドや円形状など) の構築。

  • ランチャーからの砲弾プレハブの発射。砲弾プレハブは複雑な設定になることがあり、メッシュリジッドボディコライダーオーディオソース動的ライト、およびトレイル パーティクルシステム を持つ子ゲームオブジェクトが含まれる場合があります。

  • 車両、建物、またはキャラクター。例えば、バラバラのパーツに分解されるロボットなど。このシナリオのスクリプト例では、完全な状態の動くロボットのプレハブを削除し、壊れたロボットのプレハブに置き換えます。壊れたロボットのプレハブは、個別の壊れたパーツで構成されており、それぞれにリジッドボディとパーティクルシステムが設定されています。この方法を使うと、たった 1 行のコードで元のゲームオブジェクトを壊れたバージョンのプレハブに置き換えて、ロボットをバラバラに爆発させることができます。

以下のセクションでは、これらのシナリオの実装方法を説明します。

追加リソース

ランタイムでのプレハブのインスタンス化
プレハブを使用した構造体のビルド
Copyright © 2023 Unity Technologies
优美缔软件(上海)有限公司 版权所有
"Unity"、Unity 徽标及其他 Unity 商标是 Unity Technologies 或其附属机构在美国及其他地区的商标或注册商标。其他名称或品牌是其各自所有者的商标。
公安部备案号:
31010902002961