using System; using UnityEngine; using Object = UnityEngine.Object; namespace Jovian.Utilities { public static class GameObjectUtilities { public static void DestroyGameObjectsOfType() where T : MonoBehaviour { T[] objects = Object.FindObjectsOfType(); for (int i = 0; i < objects.Length; ++i) { Object.Destroy(objects[i].gameObject); } } public static bool IsGameObjectAChildOfGameObject(this GameObject targetGameObject, GameObject potentialParentGameObject) { if (targetGameObject == null) { return false; } Transform potentialParentTransform = potentialParentGameObject.transform; Transform checkTransform = targetGameObject.transform; do { if (checkTransform == potentialParentTransform) { return true; } checkTransform = checkTransform.parent; } while (checkTransform != null); return false; } public static bool TryFindChildByName(this GameObject gameObject, string name, out GameObject childGameObject, bool includeInactive = false, bool allowPartialMatch = false, StringComparison stringComparison = StringComparison.Ordinal) { childGameObject = null; if (gameObject == null) { return false; } Transform[] children = gameObject.GetComponentsInChildren(includeInactive); foreach (Transform child in children) { if (allowPartialMatch && child.name.Contains(name, stringComparison)) { childGameObject = child.gameObject; return true; } if (!allowPartialMatch && child.name.Equals(name, stringComparison)) { childGameObject = child.gameObject; return true; } } return false; } } }