Ejemplo n.º 1
0
        private static void FillProperty(MyEditor.ComponentField property)
        {
            var propertyType = property.Field.FieldType;

            if (property.Field.FieldType.IsArray)
            {
                var      underlyingType = propertyType.GetElementType();
                Object[] components     = property.Component.GetComponentsInChildren(underlyingType, true);
                if (components != null && components.Length > 0)
                {
                    var serializedObject   = new SerializedObject(property.Component);
                    var serializedProperty = serializedObject.FindProperty(property.Field.Name);
                    serializedProperty.ReplaceArray(components);
                    serializedObject.ApplyModifiedProperties();
                    return;
                }
            }
            else
            {
                var component = property.Component.GetComponentInChildren(propertyType, true);
                if (component != null)
                {
                    var serializedObject   = new SerializedObject(property.Component);
                    var serializedProperty = serializedObject.FindProperty(property.Field.Name);
                    serializedProperty.objectReferenceValue = component;
                    serializedObject.ApplyModifiedProperties();
                    return;
                }
            }

            Debug.LogError(string.Format("{0} caused: {1} is failed to Auto Assign property. No match",
                                         property.Component.name, property.Field.Name),
                           property.Component.gameObject);
        }
Ejemplo n.º 2
0
        private static void FillProperty(MyEditor.ComponentField property)
        {
            var apAttribute = property.Field
                              .GetCustomAttributes(typeof(AutoPropertyAttribute), true)
                              .FirstOrDefault() as AutoPropertyAttribute;

            if (apAttribute == null)
            {
                return;
            }

            if (property.Field.FieldType.IsArray)
            {
                Object[] components = MultipleObjectsGetters[apAttribute.Mode].Invoke(property);
                if (components != null && components.Length > 0)
                {
                    var serializedObject   = new SerializedObject(property.Component);
                    var serializedProperty = serializedObject.FindProperty(property.Field.Name);
                    serializedProperty.ReplaceArray(components);
                    serializedObject.ApplyModifiedProperties();
                    return;
                }
            }
            else
            {
                var component = SingularObjectGetters[apAttribute.Mode].Invoke(property);
                if (component != null)
                {
                    var serializedObject   = new SerializedObject(property.Component);
                    var serializedProperty = serializedObject.FindProperty(property.Field.Name);
                    serializedProperty.objectReferenceValue = component;
                    serializedObject.ApplyModifiedProperties();
                    return;
                }
            }

            Debug.LogError($"{property.Component.name} caused: {property.Field.Name} is failed to Auto Assign property. No match",
                           property.Component.gameObject);
        }