private void Update() { var fieldType = GetFieldType(false); if (typeof(UnityEngine.Object).IsAssignableFrom(fieldType) && ReflectionDrawerUtility.TryGetCustomDrawerType(fieldType, fieldInfo == null) == null) { return; } if (value == null) { // Check if we can create a new object of this type // TODO: Move to utility, can be reused - Utility.CanCreateNewObjectOfType if ((fieldType.IsClass && fieldType.IsAbstract == false) || fieldType.IsValueType) { if (fieldType.GetConstructors().Any(o => o.GetParameters().Length == 0)) { value = Activator.CreateInstance(fieldType); NotifyValueChanged(value); } } } }