示例#1
0
        protected override void OnDrawProperty(string label)
        {
            if (IsNeedRefresh)
            {
                InitList();
            }

            if (list == null)
            {
                EditorGUILayout.BeginHorizontal();
                {
                    EditorGUILayout.PrefixLabel(label);
                    if (GUILayout.Button("Create"))
                    {
                        Property.Value = DrawerUtility.CreateInstance(Property.ValueType);

                        IsNeedRefresh = true;
                    }
                }
                EditorGUILayout.EndHorizontal();
                return;
            }
            else
            {
                EditorGUILayout.BeginVertical(EGUIStyles.BoxStyle);
                {
                    EditorGUILayout.LabelField(GUIContent.none, EditorStyles.toolbar, GUILayout.ExpandWidth(true));

                    Rect lastRect = GUILayoutUtility.GetLastRect();
                    EditorGUI.LabelField(lastRect, label, EGUIStyles.BoldLabelStyle);

                    Rect clearBtnRect = new Rect(lastRect.x + lastRect.width - 40, lastRect.y, 40, lastRect.height);
                    if (GUI.Button(clearBtnRect, "C", EditorStyles.toolbarButton))
                    {
                        Property.ClearArrayElement();
                        IsNeedRefresh = true;
                    }

                    for (int i = 0; i < list.Count; ++i)
                    {
                        EditorGUILayout.BeginHorizontal();
                        {
                            EditorGUILayout.BeginVertical();
                            {
                                elementProperties[i].OnGUILayout();
                            }
                            EditorGUILayout.EndVertical();
                            EditorGUILayout.BeginVertical(GUILayout.Width(20));
                            {
                                if (GUILayout.Button("-"))
                                {
                                    Property.RemoveArrayElementAtIndex(i);
                                    IsNeedRefresh = true;
                                }
                            }
                            EditorGUILayout.EndVertical();
                        }
                        EditorGUILayout.EndHorizontal();

                        EGUILayout.DrawHorizontalLine();
                    }
                    Rect addBtnRect = GUILayoutUtility.GetRect(lastRect.width, 20);
                    addBtnRect.x    += addBtnRect.width - 40;
                    addBtnRect.width = 40;
                    if (GUI.Button(addBtnRect, "+"))
                    {
                        Property.AddArrayElement();
                        IsNeedRefresh = true;
                    }
                }
                EditorGUILayout.EndVertical();
            }
        }