using System; namespace UnityEngine.UI.Extensions { public static class ExtentionMethods { public static T GetOrAddComponent<T>(this GameObject child) where T : Component { T result = child.GetComponent<T>(); if (result == null) { result = child.AddComponent<T>(); } return result; } public static bool IsPrefab(this GameObject gameObject) { if (gameObject == null) { throw new ArgumentNullException(nameof(gameObject)); } return !gameObject.scene.IsValid() && !gameObject.scene.isLoaded && gameObject.GetInstanceID() >= 0 && // I noticed that ones with IDs under 0 were objects I didn't recognize !gameObject.hideFlags.HasFlag(HideFlags.HideInHierarchy); // I don't care about GameObjects *inside* prefabs, just the overall prefab. } } }