Мои Уведомления
Привет, !
Мой Аккаунт Мои Финансы Мои Подписки Мои Настройки Выход
Руководство API скрипты

Объявление

public static Object Instantiate(Object original);

public static Object Instantiate(Object original, Transform parent);

public static Object Instantiate(Object original, Transform parent, bool instantiateInWorldSpace);

public static Object Instantiate(Object original, Vector3 position, Quaternion rotation);

public static Object Instantiate(Object original, Vector3 position, Quaternion rotation, Transform parent);

Параметры

original Существующий объект, копию которого вы хотите сделать.
position Позиция для нового объекта.
rotation Ориентация нового объекта.
parent Родитель, который будет назначен новому объекту.
instantiateInWorldSpace Когда вы назначаете родительский объект, передайте значение true, чтобы расположить новый объект непосредственно в мировом пространстве. Передайте false, чтобы установить положение объекта относительно его нового родителя.

Возвращает

Object Созданный клон.

Описание

Клонирует объект оригинал и возвращает клон.

Эта функция создает копию объекта аналогично команде «Дублировать» в редакторе. Если вы клонируете GameObject, вы можете указать его положение и поворот (в противном случае по умолчанию используются положение и поворот исходного игрового объекта). Если вы клонируете Компонент, игровой объект, к которому он прикреплен, также клонируется, опять же с необязательным положением и поворотом.

При клонировании GameObject или Компонента все дочерние объекты и компоненты также клонируются с набором свойств, как у исходный объект.

По умолчанию родительский элемент нового объекта имеет значение null; это не «родной брат» оригинала. Однако вы все равно можете установить родителя, используя перегруженные методы. Если указан родитель, а положение и поворот не указаны, положение и поворот исходного объекта используются для локального положения и поворота клонированного объекта или его положения и поворота в мире, если instantiateInWorldSpace параметр верный. Если положение и поворот указаны, они используются как положение и поворот объекта в мировом пространстве.

Активный статус игрового объекта во время клонирования сохраняется, поэтому, если оригинал неактивен, клон также создается в неактивном состоянии. Кроме того, для объекта и всех дочерних объектов в иерархии у каждого из их Monobehaviours и Component будут вызываться методы Awake и OnEnable, только если они активны в иерархии во время вызова этого метода.

Эти методы не создают готовое соединение с новым экземпляром объекта. Создание объектов со сборным подключением может быть достигнуто с помощью PrefabUtility.InstantiatePrefab.

Смотрите так же: Создание экземпляров префабов во время выполнения, PrefabUtility.InstantiatePrefab.

// Instantiates 10 copies of Prefab each 2 units apart from each other using UnityEngine; using System.Collections; public class ExampleClass : MonoBehaviour { public Transform prefab; void Start() { for (int i = 0; i < 10; i++) { Instantiate(prefab, new Vector3(i * 2.0F, 0, 0), Quaternion.identity); } } }

Экземпляр можно использовать для создания новых объектов во время выполнения. Примеры включают объекты, используемые для снарядов, или системы частиц для эффектов взрыва.

using UnityEngine; // Instantiate a rigidbody then set the velocity public class Example : MonoBehaviour { // Assign a Rigidbody component in the inspector to instantiate public Rigidbody projectile; void Update() { // Ctrl was pressed, launch a projectile if (Input.GetButtonDown("Fire1")) { // Instantiate the projectile at the position and rotation of this transform Rigidbody clone; 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); } } }

Instantiate также может напрямую клонировать экземпляры скрипта. Будет клонирована вся иерархия игровых объектов, и будет возвращен клонированный экземпляр скрипта.

using UnityEngine; using System.Collections; public class Missile : MonoBehaviour { public int timeoutDestructor; // ...other code... } public class ExampleClass : MonoBehaviour { // Instantiate a Prefab with an attached Missile script public Missile projectile; void Update() { // Ctrl was pressed, launch a projectile if (Input.GetButtonDown("Fire1")) { // Instantiate the projectile at the position and rotation of this transform Missile clone = Instantiate(projectile, transform.position, transform.rotation); // Set the missiles timeout destructor to 5 clone.timeoutDestructor = 5; } } }

После клонирования объекта вы также можете использовать GetComponent для установки свойств определенного компонента, присоединенного к клонированному объекту.


Объявление

public static T Instantiate(T original);

public static T Instantiate(T original, Transform parent);

public static T Instantiate(T original, Transform parent, bool worldPositionStays);

public static T Instantiate(T original, Vector3 position, Quaternion rotation);

public static T Instantiate(T original, Vector3 position, Quaternion rotation, Transform parent);

Параметры

original Объект типа T, который вы хотите клонировать.

Возвращает

T Объект типа Т.

Описание

Вы также можете использовать Generics для создания экземпляров объектов. Дополнительные сведения см. на странице Универсальные функции. подробности.

При использовании Generics нам не нужно приводить результат к определенному типу.

using UnityEngine; public class Missile : MonoBehaviour { // ...other code... } public class InstantiateGenericsExample : MonoBehaviour { public Missile missile; void Start() { Missile missileCopy = Instantiate(missile); } }
Вы можете отблагодарить автора, за перевод документации на русский язык. ₽ Спасибо
API скрипты 2021.3