Exemple #1
0
        //----------------------------------- FOR Validate&Draw -----------------------------------



        //----------------------------------- FOR ShouldDrawField -----------------------------------
        private APropertyDrawCondition GetPropertyDrawConditionForField(FieldInfo fieldInfo)
        {
            ADrawConditionAttribute[] drawConditionAttributes = (ADrawConditionAttribute[])fieldInfo.GetCustomAttributes(typeof(ADrawConditionAttribute), true);
            if (drawConditionAttributes.Length > 0)
            {
                //你的绘制条件
                APropertyDrawCondition propertyDrawCondition = DPropertyDrawCondition.GetDrawConditionForAttribute(drawConditionAttributes[0].GetType());
                return(propertyDrawCondition);
            }
            else
            {
                return(null);
            }
        }
Exemple #2
0
        //----------------------------------- FOR Validate&Draw -----------------------------------
        private bool ShouldDrawField(FieldInfo fieldInfo)
        {
            APropertyDrawCondition drawCondition = GetPropertyDrawConditionForField(fieldInfo);

            if (drawCondition != null)
            {
                //这个字段满足绘制条件吗?
                bool canDrawProperty = drawCondition.CanDrawProperty(serializedPropertiesByFieldName[fieldInfo.Name]);
                if (!canDrawProperty)
                {
                    return(false);
                }
            }

            HideInInspector[] hideInInspectorAttributes = (HideInInspector[])fieldInfo.GetCustomAttributes(typeof(HideInInspector), true);
            if (hideInInspectorAttributes.Length > 0)
            {
                return(false);   //这个字段有HideInInspector特性吗?(他是内置特性)
            }
            return(true);
        }