Самый простой способ - получить весь коллайдер на объекте, а затем проверить длину возвращаемого массива, если он равен 0, то коллайдеров нет, в противном случае есть:
void Start()
{
allObjects = FindObjectsOfType<GameObject>().ToList();
foreach (GameObject go in allObjects)
{
var colliders = go.transform.GetComponents<Collider>();
int length = colliders.Length;
if (length == 0)
{
Debug.Log(string.Format("{0} - No Colliders", go.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);
}
}
Debug.Log(string.Format("{0} - {1}", go.name, colliderTypes));
}
}
}
Обратите внимание, чтокласс Collider
является основой для 3D-коллайдеров, если вам также необходимо проверить наличие 2D-моделей, тогда получите все Collider2D
компоненты и сделайте то же самое.