public static T FindGameObjectByTagInParent <T>(this MonoBehaviour mono, string tagName) where T : MonoBehaviour { if (mono.CompareTag(tagName)) { return(mono.GetComponent <T>()); } if (!mono.transform.parent) { return(null); } var parent = mono.transform.parent; while (parent) { if (parent.CompareTag(tagName)) { return(parent.GetComponent <T>()); } else { if (parent.parent) { parent = parent.parent; } else { return(null); } } } return(null); }