public static object ScriptDrawer(object[] objects, InvokeWrapper wrapper) { object result = null; var type = wrapper.GetContainingType(); bool allowSceneObject = type == typeof(GameObject) || typeof(ScriptComponent).IsAssignableFrom(type); Object valInField = wrapper.Get <Object>(objects[0]); bool recursiveEditing = wrapper.HasAttribute <AllowRecursiveEditing>(); if (recursiveEditing) { result = InspectorGUI.FoldoutObjectField(InspectorGUI.MakeLabel(wrapper.Member), valInField, type, EditorData.Instance.GetData(objects[0] as Object, wrapper.Member.Name), !wrapper.CanWrite()); } else { result = EditorGUILayout.ObjectField(InspectorGUI.MakeLabel(wrapper.Member), valInField, type, allowSceneObject); } return(result); }