В Unity есть несколько способов уничтожить определённые объекты в иерархии, не затрагивая другие.
1. По тегам. Можно присвоить объектам, которые вы хотите уничтожить, уникальный тег. Затем, используя функцию GameObject.FindGameObjectsWithTag(), вы можете получить список всех объектов с определённым тегом. После этого вы можете пройти через этот список и уничтожить каждый объект с помощью функции Destroy().
// Найти объекты с определённым тегом и уничтожить их GameObject[] objectsToDestroy = GameObject.FindGameObjectsWithTag("MyTag"); foreach (GameObject obj in objectsToDestroy) { Destroy(obj); }
2. По имени. Если объекты, которые вы хотите уничтожить, имеют уникальные имена, вы можете использовать функцию GameObject.Find() для поиска каждого объекта по имени и затем уничтожить их с помощью функции Destroy().
// Найти объекты с определённым именем и уничтожить их GameObject objToDestroy = GameObject.Find("MyObjectName"); Destroy(objToDestroy);
3. Используйте рекурсивную функцию. Если ваши объекты находятся в определённой иерархии, вы можете использовать рекурсивную функцию для обхода всех объектов в этой иерархии и уничтожить только нужные. Для этого вам понадобится проверить, соответствует ли каждый объект вашим условиям, и рекурсивно вызвать эту же функцию для всех дочерних объектов.
// Рекурсивная функция для уничтожения определённых объектов в иерархии private void DestroyObjects(Transform parent) { for (int i = parent.childCount - 1; i >= 0; i--) { Transform child = parent.GetChild(i); // Если объект соответствует вашим условиям, уничтожьте его if (ShouldDestroyObject(child)) { Destroy(child.gameObject); } else { // Рекурсивно вызвать эту же функцию для дочерних объектов DestroyObjects(child); } } } // Пример использования DestroyObjects(transform);
Независимо от выбранного способа, имейте в виду, что при уничтожении объектов, которые имеют компоненты или другие зависимости, возможны ошибки и нестабильное поведение в вашей сцене или игре. Убедитесь, что вы предварительно сохраните необходимую информацию или выполните все необходимые операции перед уничтожением объектов.