using System.Collections;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using UnityEngine;
public class GetComponents : MonoBehaviour
{
public Transform parent;
public List<GameObject> allObjects = new List<GameObject>();
private void Start()
{
string path = "e:/colliders.txt";
StreamWriter writer = new StreamWriter(path, true);
allObjects = FindObjectsOfType<GameObject>().ToList();
Transform[] allChildren = parent.GetComponentsInChildren<Transform>();
foreach (Transform child in allChildren)
{
var colliders = child.GetComponents<Collider>();
int length = colliders.Length;
if (length == 0)
{
writer.WriteLine(string.Format("{0} - No Colliders", child.name));
}
else
{
//composes a list of the colliders types, this will print what you want e.g. "Wall1 - BoxCollider, MeshCollider"
string colliderTypes = string.Empty;
for (int i = 0; i < length; i++)
{
colliderTypes = string.Format("{0}{1}", colliderTypes, colliders[i].GetType().Name);
if (i != (length - 1))
{
colliderTypes = string.Format("{0}, ", colliderTypes);
}
}
//writer.WriteLine(string.Format("{0} - {1}", child.name, colliderTypes));
}
}
writer.Close();
}
}
В этом случае я получаю только объекты без коллайдеров. И тогда я хочу добавить к каждому объекту коллайдер. Но так как объектов так много, я хочу добавить к каждому из них коллайдер, который не позволит персонажу перемещаться по ним. Я не уверен, просто ли добавить к ним коллайдер сетки или какой-нибудь другой коллайдер / ы?
И как мне установить уровень, чтобы начать получать объекты?
Например, яимеют такую структуру:
Parent
Child 1
Child 2
Child 3
Child 4
Теперь уровень 0 является родительским, уровень 1 - дочерним от 1 до 4. Но у каждого дочернего элемента 1,2,3,4 есть много дочерних элементов на многих уровнях (деревьях). .
Я хочу, чтобы пример для получения дочерних форм преобразования уровня 1, чтобы он не включал родительский объект и дочерние элементы 1,2,3,4 в качестве объектов без коллайдеров.