protected void onDebug() { if (_debug) { using (horizontal()) debugToggles(); using (vertical()) { GUI.enabled = false; if (_static) { Area.separatorLine(); if (_field) { foreach (var field in getAllFields(target.GetType(), _baseType, BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Static | BindingFlags.DeclaredOnly)) { if (excludeField(field.Name)) { continue; } if (propertyField(field.FieldType, field.Name, field.GetValue(target)) == false) { helpBox(field.Name, field.FieldType); } } } if (_property) { foreach (var property in getAllPropertys(target.GetType(), _baseType, BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Static | BindingFlags.DeclaredOnly)) { object v; try { v = property.GetValue(target, null); } catch (System.Exception e) { helpBox(property.Name, e.InnerException); continue; } if (propertyField(property.PropertyType, property.Name, v) == false) { helpBox(property.Name, property.PropertyType); } } } } if (_baseType) { Area.separatorLine(); if (_field) { foreach (var field in getAllFields(target.GetType().BaseType, true, BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly)) { if (excludeField(field.Name)) { continue; } if (field.GetCustomAttributes(typeof(SerializeField), true).Length > 0) { continue; } if (field.IsPublic == false || (_nonSerialized && field.GetCustomAttributes(typeof(System.NonSerializedAttribute), true).Length > 0)) { if (propertyField(field.FieldType, field.Name, field.GetValue(target)) == false) { helpBox(field.Name, field.FieldType); } } } } if (_property) { foreach (var property in getAllPropertys(target.GetType().BaseType, true, BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly)) { if (excludeProperty(property.Name)) { continue; } object v; try { v = property.GetValue(target, null); } catch (System.Exception e) { helpBox(property.Name, e.InnerException); continue; } if (propertyField(property.PropertyType, property.Name, v) == false) { helpBox(property.Name, property.PropertyType); } } } } Area.separatorLine(); if (_field) { foreach (var field in getAllFields(target.GetType(), false, BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly)) { if (excludeField(field.Name)) { continue; } if (field.GetCustomAttributes(typeof(SerializeField), true).Length > 0) { continue; } if (field.IsPublic == false || (_nonSerialized && field.GetCustomAttributes(typeof(System.NonSerializedAttribute), true).Length > 0)) { if (propertyField(field.FieldType, field.Name, field.GetValue(target)) == false) { helpBox(field.Name, field.FieldType); } } } } if (_property) { foreach (var property in getAllPropertys(target.GetType(), false, BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly)) { if (excludeProperty(property.Name)) { continue; } object v; try { v = property.GetValue(target, null); } catch (System.Exception e) { helpBox(property.Name, e.InnerException); continue; } if (propertyField(property.PropertyType, property.Name, v) == false) { helpBox(property.Name, property.PropertyType); } } } GUI.enabled = true; } if (_refresh) { EditorUtility.SetDirty(target); } } }