Parameters
original |
An existing object that you want to make a copy of. |
position |
Position for the new object. |
rotation |
Orientation of the new object. |
Description
Clones the object original
and returns the clone.
This function makes a copy of an object in a similar way to the Duplicate command in the editor. If you are cloning a
GameObject then you can also optionally specify its position and rotation (these will default to
Vector3.zero and
Quaternion.identity respectively). If you are cloning a
Component then the GameObject is is attached to will also be cloned, again with an optional position and rotation.
When you clone a
GameObject or
Component, all child objects and components will also be cloned with their properties set like those of the original object. However, the
parent of the new object will be null, so it will not be a "sibling" of the original. However, you can still set the parent explicitly if you wish. Also, the active status of a GameObject at the time of cloning will be passed on, so if the original is inactive then the clone will be created in an inactive state too.
See Also:
In depth Prefab Instantiate discussion.
// Instantiates 10 copies of prefab each 2 units apart from each other var prefab : Transform; for (var i : int = 0;i < 10; i++) {
Instantiate (prefab, Vector3(i * 2.0, 0, 0), Quaternion.identity);
}
using UnityEngine;
using System.Collections;
public class Example : MonoBehaviour {
public Transform prefab;
void Example() {
int i = 0;
while (i < 10) {
Instantiate(prefab, new Vector3(i * 2.0F, 0, 0), Quaternion.identity) as Transform;
i++;
}
}
}
import UnityEngine
import System.Collections
public class Example(MonoBehaviour):
public prefab as Transform
def Example() as void:
i as int = 0
while i < 10:
(Instantiate(prefab, Vector3((i * 2.0F), 0, 0), Quaternion.identity) as Transform)
i++
Instantiate is most commonly used to instantiate projectiles, AI Enemies, particle explosions or wrecked object replacements.
// Instantiate a rigidbody then set the velocity var projectile : Rigidbody; function Update () {
// Ctrl was pressed, launch a projectile
if (Input.GetButtonDown("Fire1")) {
// Instantiate the projectile at the position and rotation of this transform
var clone : Rigidbody;
clone = Instantiate(projectile, transform.position, transform.rotation);
// Give the cloned object an initial velocity along the current
// object's Z axis
clone.velocity = transform.TransformDirection (Vector3.forward * 10);
}
}
using UnityEngine;
using System.Collections;
public class Example : MonoBehaviour {
public Rigidbody projectile;
void Update() {
if (Input.GetButtonDown("Fire1")) {
Rigidbody clone;
clone = Instantiate(projectile, transform.position, transform.rotation) as Rigidbody;
clone.velocity = transform.TransformDirection(Vector3.forward * 10);
}
}
}
import UnityEngine
import System.Collections
public class Example(MonoBehaviour):
public projectile as Rigidbody
def Update() as void:
if Input.GetButtonDown('Fire1'):
clone as Rigidbody
clone = (Instantiate(projectile, transform.position, transform.rotation) as Rigidbody)
clone.velocity = transform.TransformDirection((Vector3.forward * 10))
Instantiate can also clone script instances directly.
The entire game object hierarchy will be cloned and the cloned script instance will be returned.
// Instantiate a prefab with an attached Missile script
var projectile : Missile; function Update () {
// Ctrl was pressed, launch a projectile
if (Input.GetButtonDown("Fire1")) {
// Instantiate the projectile at the position and rotation of this transform
var clone : Missile;
clone = Instantiate(projectile, transform.position, transform.rotation);
// Set the missiles timeout destructor to 5
clone.timeoutDestructor = 5;
}
}
no example available in C#
no example available in Boo
After cloning an object you can also use GetComponent to set properties on a specific component attached to the cloned object.