GameObjectUtility.DuplicateGameObjects
Declaration
public static GameObject[] DuplicateGameObjects(GameObject[] gameObjects);Параметры
| Параметр | Описание |
|---|---|
| gameObjects | Массив GameObjects для дублирования. |
Возвращаемое значение
GameObject[] Массив дублированных корней GameObject.
Описание
Дублирует массив GameObjects и возвращает массив новых корней GameObject.
Дубликаты GameObjects в Scene. Каждый GameObject будет находиться на том же уровне иерархии, что и его оригинальный GameObject, и они будут иметь одинакового родителя. Если есть какие-либо дочери или компоненты, которые принадлежат оригинальному GameObject, то дубликат также будет иметь их. Если родитель и дочь добавлены в входной массив, то только родитель будет дублироваться и возвращен (подобно тому, как Ctrl + D работает в редакторе).
Для дублирования одного GameObject используйте DuplicateGameObject. Для дублирования ассетов используйте AssetDatabase.CopyAsset.
using UnityEngine; using UnityEditor;
public static class DuplicateGameObjectsExample { // Create context menu [MenuItem("Example/Duplicating GameObjects Example")] public static void DuplicatingGameObjectsExample() { // Creating the original GameObjects GameObject gameObject1 = new GameObject("gameObject1"); GameObject gameObject2 = new GameObject("gameObject2"); GameObject gameObject3 = new GameObject("gameObject3");
// Creating an array of all GameObjects GameObject[] gameObjectArray = { gameObject1, gameObject2, gameObject3 };
// Duplicating the array of GameObjects GameObject[] duplicatedGameObjectArray = GameObjectUtility.DuplicateGameObjects(gameObjectArray);
// Display the names of the duplicated GameObjects in the console Debug.Log("Duplicated GameObjects: "); for (int i = 0; i < duplicatedGameObjectArray.Length; i++) { Debug.Log(duplicatedGameObjectArray[i].name); } }
// Create context menu [MenuItem("Example/Duplicating Hierarchy Example")] public static void DuplicatingHierarchyExample() { // Creating the original GameObjects GameObject parent = new GameObject("parent"); GameObject child1 = new GameObject("child1"); GameObject child2 = new GameObject("child2");
// Assigning parents to children child1.transform.parent = parent.transform; child2.transform.parent = parent.transform;
// Creating an array of all GameObjects GameObject[] gameObjectArray = { parent, child1, child2 };
// Duplicating the array of GameObjects GameObject[] duplicatedGameObjectArray = GameObjectUtility.DuplicateGameObjects(gameObjectArray);
// Display the names of the duplicated GameObjects in the console // Only the parent will be returned Debug.Log("Duplicated GameObjects: "); for (int i = 0; i < duplicatedGameObjectArray.Length; i++) { Debug.Log(duplicatedGameObjectArray[i].name); } } }
Любые ошибки и предупреждения от операции дублирования отражаются в журнале и консоли.