/// <summary> /// Draws popup in the Inspector /// </summary> /// <param name="position"></param> /// <param name="property"></param> /// <param name="label"></param> public override void OnGUI(Rect position, SerializedProperty property, GUIContent label) { RequiredInHierarchyAttribute requiredAttr = attribute as RequiredInHierarchyAttribute; if (!FindRequiredComponent(requiredAttr)) { position.height = EditorGUIUtility.singleLineHeight * 2.0f; EditorGUI.HelpBox(position, string.Format("Can not find a {0} component in the scene.", requiredAttr.requiredType.Name), MessageType.Warning); position.y += EditorGUIUtility.singleLineHeight * 2.0f + 2; position.height = EditorGUIUtility.singleLineHeight; } EditorGUI.PropertyField(position, property, label, true); }
static Object FindRequiredComponent(RequiredInHierarchyAttribute requiredAttr) { return(GameObject.FindObjectOfType(requiredAttr.requiredType)); }