original | コピーしたい既存オブジェクト |
position | 新規オブジェクトの位置 (デフォルト Vector3.zero) |
rotation | 新規オブジェクトの向き (デフォルト Quaternion.identity) |
Object 元のオブジェクトのクローン
オブジェクト original
のコピーを返します
この関数はオブジェクトをエディター上の Duplicate コマンドと同様の方法でクローンします。もし GameObject やそれにアタッチしているものをクローンする場合、その位置や回転を任意で指定できます。
コンポーネント をクローンしている場合、それがアタッチされているゲームオブジェクトもクローンされます。
GameObject や Component をクローンするとき、すべての子オブジェクト、コンポーネント、さらにそれらに付属するすべてのプロパティーもクローンされます。ただし、クローンされたオブジェクトの parent プロパティーは null となるため、元のオブジェクトの "子" にはなりません。
クローン時のゲームオブジェクトのアクティブ状態が飛ばされるため、オリジナルが非アクティブであればクローンも非アクティブ状態で作成されます。
Instantiate とその使用方法に関する詳しいチュートリアルは、 実行時のプレハブのインスタンス化 をご参照ください。
この例では、プレハブオブジェクトのクローンのインスタンスを、X軸に沿った線上に10個作成します。
using UnityEngine;
public class InstantiateExample : MonoBehaviour { public GameObject prefab;
void Start() { for (int i = 0; i < 10; i++) Instantiate(prefab, new Vector3(i * 2.0f, 0, 0), Quaternion.identity); } }
この関数はスクリプトのインスタンスを直接クローンすることもできます。
ゲームオブジェクト全体のヒエラルキーがクローンされ、スクリプトのインスタンスが返されます。
オブジェクトをクローンした後、さらに GetComponent を使用して、クローンされたオブジェクトの特定コンポーネントのプロパティーを設定できます。
using UnityEngine;
public class InstantiateComponentExample : MonoBehaviour { // Instantiate a prefab with an attached Missile script public Missile missilePrefab;
void Start() { // Instantiate the missile at the position and rotation of this object's transform Missile clone = (Missile)Instantiate(missilePrefab, transform.position, transform.rotation); } }
original | クローンしたい T 型のオブジェクト |
T T 型のオブジェクト
ジェネリック版も使用できます。詳細については Generic Functions を参照してください。
この例では Missile オブジェクトのインスタンスを再び作成していますが、Generics を使用しているので結果をキャストする必要がありません。
using UnityEngine;
public class InstantiateGenericsExample : MonoBehaviour { public Missile missile;
void Start () { Missile missileCopy = Instantiate<Missile>(missile); } }