WisdomSoft - for your serial experiences.

オブジェクトの複製

シーン内に存在する任意のオブジェクトを Instantiate() メソッドで複製できます。

既存のオブジェクトを複製する

Object クラスには Unity エンジンによって管理されている任意のオブジェクトを複製する Instantiate() メソッドが用意されています。Unity エディタなどによって作られた複雑なオブジェクトの構造を、そのまま複製することができるため、デザイナによって作られたオリジナルのオブジェクトを、スクリプトで複製しながらゲームで動的に利用するといった使い方ができます。

Object クラス Instantiate() メソッド
public static Object Instantiate(Object original)
public static Object Instantiate(Object original, Vector3 position, Quaterinon rotation)

original パラメータにはコピー元となるオブジェクトを指定します。position パラメータには複製された新しいオブジェクトの座標、rotation には向きを指定します。position パラメータと rotation パラメータが省略されている場合は、コピー元のオブジェクトと同じ位置と向きで作られます。

Instantiate() メソッドは original パラメータに指定されたオブジェクトを複製した新しいインスタンスを返します。

コード1
using UnityEngine;

public class Test : MonoBehaviour
{
	void Start()
	{
		GameObject original = GameObject.Find("Cube");
		GameObject copied = Object.Instantiate(original) as GameObject;
		copied.transform.Translate(2, 0, 0);
	}
}
実行結果
コード1 実行結果

コード1は "Cube" という名前のオブジェクトを取得して複製するスクリプトです。新しく作られたオブジェクトは X 軸に 2 だけ移動させて表示しています。

ゲームオブジェクトに限らず任意のオブジェクトを複製できるため、Instantiate() メソッドの戻り値型は UnityEngine.Object クラスです。元のオブジェクト型として利用するにはキャスト式や as 演算子で変換する必要があります。