コード例 #1
0
            public static List <InspectorGroup> GroupFields(List <InspectorField> fields)
            {
                var groups = new Dictionary <string, InspectorGroup>();

                for (int i = 0; i < fields.Count; i++)
                {
                    var field = fields[i];

                    InspectorGroup group = null;
                    if (!groups.TryGetValue(field.Group, out group))
                    {
                        group = groups[field.Group] = new InspectorGroup()
                        {
                            Name = field.Group
                        };
                    }

                    group.Fields.Add(field);
                }

                var list = groups.Values.ToList();

                for (int i = 0; i < list.Count; i++)
                {
                    list[i].SortFields();
                }

                return(list);
            }
コード例 #2
0
        protected void editTaggedFields()
        {
            var fields = target
                         .GetType()
                         .GetMembers(BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic)
                         .Where(x => x.IsDefined(typeof(InspectorAttribute), true))
                         .Select(x => new InspectorField()
            {
                EditorTarget = serializedObject,
                Member       = x,
                Attribute    = (InspectorAttribute)x.GetCustomAttributes(typeof(InspectorAttribute), true).FirstOrDefault()
            })
                         .ToList();

            var groups = InspectorGroup.GroupFields(fields);

            orderGroups(groups);

            for (int i = 0; i < groups.Count; i++)
            {
                var group = groups[i];
                if (CanShowGroup(group))
                {
                    using (BeginGroup(group.Name))
                    {
                        OnBeforeGroupInspectorGUI();

                        for (int f = 0; f < group.Fields.Count; f++)
                        {
                            var field = group.Fields[f];
                            if (CanShowField(field))
                            {
                                field.OnInspectorGUI(serializedObject);
                            }
                        }

                        OnAfterGroupInspectorGUI();
                    }
                }
            }

            serializedObject.ApplyModifiedProperties();
        }
コード例 #3
0
 protected virtual bool CanShowGroup(InspectorGroup group)
 {
     return(true);
 }
コード例 #4
0
ファイル: InspectorBase.cs プロジェクト: supertms/WolongYin
		protected virtual bool CanShowGroup( InspectorGroup group )
		{
			return true;
		}