private Type GetElementType(object values) { Type valuesType = values.GetType(); Type elementType = ReflectionUtility.GetListElementType(valuesType); return(elementType); }
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); }