original | コピーしたい既存オブジェクト |
position | 新規オブジェクトの位置 (デフォルト Vector3.zero) |
rotation | 新規オブジェクトの向き (デフォルト Quaternion.identity) |
parent | オブジェクトが親にする transform |
worldPositionStays | parent を指定するときに、元のワールドの位置が維持されるかどうか |
Object 元のオブジェクトのクローン
オブジェクト original
のコピーを返します
This function makes a clone of an object in a similar way to the Duplicate command in the editor. If you are cloning a GameObject, or something attached to a GameObject, then you can also optionally specify its position and rotation.
コンポーネント をクローンしている場合、それがアタッチされているゲームオブジェクトもクローンされます。
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); } }
Instantiate can also clone script instances directly.
The game object hierarchy will be cloned and the cloned script instance will be returned.
オブジェクトをクローンした後、さらに 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); } }