Exemple #1
0
        private Type GetElementType(object values)
        {
            Type valuesType  = values.GetType();
            Type elementType = ReflectionUtility.GetListElementType(valuesType);

            return(elementType);
        }
Exemple #2
0
        private Object GetAssignableObject(Object obj, ReorderableList list)
        {
            System.Type listType    = PropertyUtility.GetPropertyType(list.serializedProperty);
            System.Type elementType = ReflectionUtility.GetListElementType(listType);

            if (elementType == null)
            {
                return(null);
            }

            System.Type objType = obj.GetType();

            if (elementType.IsAssignableFrom(objType))
            {
                return(obj);
            }

            if (objType == typeof(GameObject))
            {
                if (typeof(Transform).IsAssignableFrom(elementType))
                {
                    Transform transform = ((GameObject)obj).transform;
                    if (elementType == typeof(RectTransform))
                    {
                        RectTransform rectTransform = transform as RectTransform;
                        return(rectTransform);
                    }
                    else
                    {
                        return(transform);
                    }
                }
                else if (typeof(MonoBehaviour).IsAssignableFrom(elementType))
                {
                    return(((GameObject)obj).GetComponent(elementType));
                }
            }

            return(null);
        }