Beispiel #1
0
        private void OnPropertyGUI(Rect rect)
        {
            GUILayout.BeginArea(rect);
            {
                EditorGUILayout.LabelField("Property", m_PropertyStyle);
                m_PropertyScrollPos = EditorGUILayout.BeginScrollView(m_PropertyScrollPos, GUILayout.Width(rect.width - 17));
                {
                    EditorGUIUtil.BeginLabelWidth(100);
                    {
                        float timeLen = EditorGUILayout.FloatField("Time Length", m_GroupData.Length);
                        if (timeLen != m_GroupData.Length)
                        {
                            m_GroupData.Length      = timeLen;
                            DrawerConfig.TimeLength = timeLen;
                        }

                        EditorGUILayout.Space();

                        if (SelectTrackIndex >= 0 && SelectTrackIndex < m_TrackDrawers.Count)
                        {
                            m_TrackDrawers[SelectTrackIndex].OnPropertyGUI(m_IsShowDesc());
                        }
                    }
                    EditorGUIUtil.EndLableWidth();
                }
                EditorGUILayout.EndScrollView();
            }
            GUILayout.EndArea();
        }
Beispiel #2
0
        protected override void OnGUI()
        {
            if (boldCenterStyle == null)
            {
                boldCenterStyle           = new GUIStyle(EditorStyles.boldLabel);
                boldCenterStyle.alignment = TextAnchor.MiddleCenter;
                boldCenterStyle.fontSize  = 16;
            }

            base.OnGUI();
            EditorGUILayout.BeginVertical();
            {
                EditorGUILayout.LabelField("New Data Creater", boldCenterStyle);
                EditorGUILayout.Space();
                EditorGUIUtil.BeginLabelWidth(60);
                {
                    id = EditorGUILayout.IntField("Input ID:", id);
                }
                EditorGUIUtil.EndLableWidth();
                GUILayout.FlexibleSpace();
                if (!string.IsNullOrEmpty(errorMsg))
                {
                    EditorGUILayout.HelpBox(errorMsg, MessageType.Error);
                }
                EditorGUILayout.BeginHorizontal();
                {
                    if (GUILayout.Button("Create"))
                    {
                        if (checkCallback != null)
                        {
                            if (checkCallback(id))
                            {
                                createCallback?.Invoke(id);
                                createCallback = null;
                                Close();
                            }
                            else
                            {
                                errorMsg = "Error ID";
                            }
                        }
                        else
                        {
                            createCallback?.Invoke(id);
                            Close();
                        }
                    }
                    if (GUILayout.Button("Cancel"))
                    {
                        Close();
                    }
                }
                EditorGUILayout.EndHorizontal();
            }
            EditorGUILayout.EndVertical();
        }
        protected override void OnGUI()
        {
            base.OnGUI();

            GUIStyle boldCenterStyle = new GUIStyle(EditorStyles.label);

            boldCenterStyle.alignment = TextAnchor.MiddleCenter;
            boldCenterStyle.fontStyle = FontStyle.Bold;
            string address = "";

            if (m_RepeatAddressList.Count > 0)
            {
                address = m_RepeatAddressList[0].AssetAddress;
            }
            EditorGUILayout.LabelField($"Repeat Address({address})", boldCenterStyle);

            m_ScrollPos = EditorGUILayout.BeginScrollView(m_ScrollPos, EditorStyles.helpBox);
            {
                int index = 0;
                foreach (var data in m_RepeatAddressList)//绘制重复的项
                {
                    EditorGUILayout.BeginHorizontal();
                    {
                        EditorGUILayout.LabelField("" + index, GUILayout.Width(20));
                        EditorGUIUtil.BeginLabelWidth(60);
                        {
                            EditorGUILayout.TextField("assetPath", data.AssetPath);
                        }
                        EditorGUIUtil.EndLableWidth();
                        UnityObject uObj = AssetDatabase.LoadAssetAtPath <UnityObject>(data.AssetPath);
                        EditorGUILayout.ObjectField(uObj, typeof(UnityObject), true, GUILayout.Width(120));
                    }
                    EditorGUILayout.EndHorizontal();

                    ++index;
                }
            }
            EditorGUILayout.EndScrollView();
        }
        protected override void DrawElement(Rect rect, IList list, int index)
        {
            SummonData valueData = list[index] as SummonData;
            Rect       fieldRect = new Rect(rect.x, rect.y, rect.width, EditorGUIUtility.singleLineHeight);

            valueData.SummonID           = EditorGUI.IntField(fieldRect, "SummonID", valueData.SummonID);
            fieldRect.y                 += fieldRect.height;
            valueData.MaxCount           = EditorGUI.IntField(fieldRect, "MaxCount", valueData.MaxCount);
            fieldRect.y                 += fieldRect.height;
            valueData.LifeTime           = EditorGUI.FloatField(fieldRect, "LifeTime", valueData.LifeTime);
            fieldRect.y                 += fieldRect.height;
            valueData.IsDeadWithSummoner = EditorGUI.Toggle(fieldRect, "IsDeadWithSummoner", valueData.IsDeadWithSummoner);
            fieldRect.y                 += fieldRect.height;
            valueData.IsFllowTarget      = EditorGUI.Toggle(fieldRect, "IsFllowTarget", valueData.IsFllowTarget);
            fieldRect.y                 += fieldRect.height;
            EditorGUI.LabelField(fieldRect, "OffsetPosition");
            fieldRect.y += fieldRect.height;
            EditorGUIUtil.BeginLabelWidth(30);
            {
                Rect itemRect = fieldRect;
                itemRect.x                += 12;
                itemRect.width             = (itemRect.width - 12) * 0.33f;
                valueData.OffsetPosition.X = EditorGUI.FloatField(itemRect, "x", valueData.OffsetPosition.X);
                itemRect.x                += itemRect.width;
                valueData.OffsetPosition.Y = EditorGUI.FloatField(itemRect, "y", valueData.OffsetPosition.Y);
                itemRect.x                += itemRect.width;
                valueData.OffsetPosition.Z = EditorGUI.FloatField(itemRect, "z", valueData.OffsetPosition.Z);
            }
            EditorGUIUtil.EndLableWidth();
            fieldRect.y           += fieldRect.height;
            valueData.PositionType = (SummonEntityPositionType)EditorGUI.EnumPopup(fieldRect, "PositionType", valueData.PositionType);
            if (valueData.PositionType != SummonEntityPositionType.None)
            {
                fieldRect.y          += fieldRect.height;
                valueData.MinDistance = EditorGUI.FloatField(fieldRect, "NegativeDistance", valueData.MinDistance);
                fieldRect.y          += fieldRect.height;
                valueData.MaxDistance = EditorGUI.FloatField(fieldRect, "PositiveDistance", valueData.MaxDistance);
            }
        }
Beispiel #5
0
        protected virtual void OnEnable()
        {
            m_labels = serializedObject.FindProperty("m_labels");

            m_labelsR = new ReorderableList(serializedObject, m_labels, false, true, true, true);
            //自定义列表名称
            m_labelsR.drawHeaderCallback = (rect) =>
            {
                EditorGUI.LabelField(rect, "可配置标签列表");
            };


            //自定义绘制列表元素
            m_labelsR.drawElementCallback = (rect, index, isActive, isFocused) =>
            {
                EditorGUIUtil.BeginLabelWidth(40);
                {
                    EditorGUI.PropertyField(rect, m_labels.GetArrayElementAtIndex(index), new GUIContent("" + index));
                }
                EditorGUIUtil.EndLableWidth();
            };

            //添加元素
            m_labelsR.onAddCallback += (ReorderableList list) =>
            {
                m_labels.InsertArrayElementAtIndex(m_labels.arraySize);
            };

            //当删除元素时候的回调函数,实现删除元素时,有提示框跳出
            m_labelsR.onRemoveCallback = (ReorderableList list) =>
            {
                if (EditorUtility.DisplayDialog("提示!", "移除这个元素吗?", "移除", "取消"))
                {
                    ReorderableList.defaultBehaviours.DoRemoveButton(list);
                }
            };
        }
        protected virtual void OnEnable()
        {
            m_AssetAssemblyType = serializedObject.FindProperty("m_AssetAssemblyType");
            m_AssetGroups       = serializedObject.FindProperty("m_AssetGroups");
            m_TestGroupPrefix   = serializedObject.FindProperty("TestGroupPrefix");

            groupList = new ReorderableList(serializedObject, m_AssetGroups, false, true, false, false);

            //自定义列表名称
            groupList.drawHeaderCallback = (rect) =>
            {
                EditorGUI.LabelField(rect, "Asset Group List:");
            };

            //自定义绘制列表元素
            groupList.drawElementCallback = (rect, index, isActive, isFocused) =>
            {
                EditorGUIUtil.BeginLabelWidth(40);
                {
                    EditorGUI.PropertyField(rect, m_AssetGroups.GetArrayElementAtIndex(index), new GUIContent("" + index));
                }
                EditorGUIUtil.EndLableWidth();
            };
        }
        private void OnEnable()
        {
            m_FilterComposeType    = serializedObject.FindProperty("m_FilterComposeType");
            m_AssetFilters         = serializedObject.FindProperty("m_AssetFilters");
            m_OperationComposeType = serializedObject.FindProperty("m_OperationComposeType");
            m_AssetOperations      = serializedObject.FindProperty("m_AssetOperations");


            #region --------------------------------------------- 二级筛选条件列表------------------------------------------------

            m_AssetFilterRList = new ReorderableList(serializedObject, m_AssetFilters, true, true, true, true);
            //自定义列表名称
            m_AssetFilterRList.drawHeaderCallback = (rect) =>
            {
                EditorGUI.LabelField(rect, "二级删选允许条件列表");
            };

            //自定义绘制列表元素
            m_AssetFilterRList.drawElementCallback = (rect, index, isActive, isFocused) =>
            {
                EditorGUIUtil.BeginLabelWidth(40);
                {
                    EditorGUI.PropertyField(rect, m_AssetFilters.GetArrayElementAtIndex(index), new GUIContent("" + index));
                }
                EditorGUIUtil.EndLableWidth();
            };

            //添加元素
            m_AssetFilterRList.onAddCallback += (ReorderableList list) =>
            {
                m_AssetFilters.InsertArrayElementAtIndex(m_AssetFilters.arraySize);
            };

            //当删除元素时候的回调函数,实现删除元素时,有提示框跳出
            m_AssetFilterRList.onRemoveCallback = (ReorderableList list) =>
            {
                if (EditorUtility.DisplayDialog("提示!", "移除这个元素吗?", "移除", "取消"))
                {
                    ReorderableList.defaultBehaviours.DoRemoveButton(list);
                }
            };

            #endregion ---------------------------------------end------ 二级筛选条件列表--------------------------------------



            #region --------------------------------------------规则列表------------------------------------------------

            m_AssetOperationRList = new ReorderableList(serializedObject, m_AssetOperations, true, true, true, true);
            //自定义列表名称
            m_AssetOperationRList.drawHeaderCallback = (rect) =>
            {
                EditorGUI.LabelField(rect, "规则列表");
            };

            //自定义绘制列表元素
            m_AssetOperationRList.drawElementCallback = (rect, index, isActive, isFocused) =>
            {
                EditorGUIUtil.BeginLabelWidth(40);
                {
                    EditorGUI.PropertyField(rect, m_AssetOperations.GetArrayElementAtIndex(index), new GUIContent("" + index));
                }
                EditorGUIUtil.EndLableWidth();
            };

            //添加元素
            m_AssetOperationRList.onAddCallback += (list) =>
            {
                m_AssetOperations.InsertArrayElementAtIndex(m_AssetOperations.arraySize);
            };

            //当删除元素时候的回调函数,实现删除元素时,有提示框跳出
            m_AssetOperationRList.onRemoveCallback = (ReorderableList list) =>
            {
                if (EditorUtility.DisplayDialog("提示!", "移除这个元素吗?", "移除", "取消"))
                {
                    ReorderableList.defaultBehaviours.DoRemoveButton(list);
                }
            };

            #endregion ---------------------------------------end------ 规则列表--------------------------------------
        }
Beispiel #8
0
        protected override void RowGUI(RowGUIArgs args)
        {
            var item = (TreeViewItem <TreeElementWithData <AssetBundleGroupTreeData> >)args.item;
            AssetBundleGroupTreeData groupTreeData = item.data.Data;

            Rect contentRect = args.rowRect;

            contentRect.x     += GetContentIndent(item);
            contentRect.width -= GetContentIndent(item);

            GUILayout.BeginArea(contentRect);
            {
                AssetBundleGroupData groupData = groupTreeData.GroupData;
                if (groupTreeData.IsGroup)
                {
                    EditorGUILayout.BeginHorizontal();
                    {
                        string groupName = groupData.GroupName;
                        if (groupData.IsMain)
                        {
                            groupName += "(Main)";
                        }
                        groupName += "  " + groupData.AssetDatas.Count;
                        EditorGUILayout.LabelField(new GUIContent(groupName));
                        if (groupTreeData.IsAddressRepeat)
                        {
                            if (GUILayout.Button(m_AddressRepeatContent))
                            {
                                SetExpanded(args.item.id, true);
                            }
                        }
                        GUILayout.FlexibleSpace();
                    }
                    EditorGUILayout.EndHorizontal();
                }
                else
                {
                    GUILayout.BeginHorizontal();
                    {
                        if (groupTreeData.IsAddressRepeat)//如果资源有重复的添加提示
                        {
                            if (GUILayout.Button(m_AddressRepeatContent, GUILayout.Width(24)))
                            {
                                Vector2 pos = GUIUtility.GUIToScreenPoint(Input.mousePosition);
                                AssetAddressRepeatPopupWindow.GetWindow().ShowWithParam(groupTreeData.RepeatAddressList, pos);
                            }
                        }
                        else
                        {
                            GUILayout.Label(GUIContent.none, GUILayout.Width(24));
                        }

                        EditorGUIUtil.BeginLabelWidth(60);
                        {
                            AssetAddressData assetData = groupData.AssetDatas[groupTreeData.DataIndex];
                            EditorGUILayout.LabelField(new GUIContent("" + groupTreeData.DataIndex), GUILayout.Width(20));
                            EditorGUILayout.TextField("address:", assetData.AssetAddress);
                            GUILayout.BeginVertical();
                            {
                                EditorGUILayout.TextField("path:", assetData.AssetPath);
                                EditorGUILayout.TextField("bundle:", assetData.BundlePath);
                                EditorGUILayout.TextField("labels:", string.Join(",", assetData.Labels));
                            }
                            GUILayout.EndVertical();
                        }
                        EditorGUIUtil.EndLableWidth();
                    }
                    GUILayout.EndHorizontal();
                }
            }
            GUILayout.EndArea();
        }
Beispiel #9
0
        protected virtual void OnEnable()
        {
            m_IsEnable          = serializedObject.FindProperty("m_IsEnable");
            m_GroupName         = serializedObject.FindProperty("m_GroupName");
            m_AssetAssemblyType = serializedObject.FindProperty("m_AssetAssemblyType");
            m_AssetSearchers    = serializedObject.FindProperty("m_AssetSearchers");
            m_FilterOperations  = serializedObject.FindProperty("m_FilterOperations");

            #region --------------------------------------------- 搜索路径条件列表------------------------------------------------

            assetSearcherRList = new ReorderableList(serializedObject, m_AssetSearchers, false, true, true, true);
            //自定义列表名称
            assetSearcherRList.drawHeaderCallback = (rect) =>
            {
                EditorGUI.LabelField(rect, "资源路径内容搜索列表");
            };

            //自定义绘制列表元素
            assetSearcherRList.drawElementCallback = (curRect, index, isActive, isFocused) =>
            {
                SerializedProperty property = m_AssetSearchers.GetArrayElementAtIndex(index);

                //文件夹路径
                SerializedProperty folder = property.FindPropertyRelative("m_Folder");
                curRect.height     = EditorGUIUtility.singleLineHeight;
                folder.stringValue = EditorGUIUtil.DrawAssetFolderSelection(curRect, "m_Folder", folder.stringValue);

                //是否包括子文件夹
                SerializedProperty includeSubfolder = property.FindPropertyRelative("m_IncludeSubfolder");
                curRect.y += curRect.height;
                EditorGUI.PropertyField(curRect, includeSubfolder);

                //文件名过滤器正则表达式
                SerializedProperty fileNameFilterRegex = property.FindPropertyRelative("m_FileNameFilterRegex");
                curRect.y += curRect.height;
                EditorGUI.PropertyField(curRect, fileNameFilterRegex);
            };

            //设置元素高度
            assetSearcherRList.elementHeightCallback = (index) =>
            {
                return(EditorGUIUtility.singleLineHeight * 3 + 10);
            };

            //当添加新元素时的回调函数,自定义新元素的值
            assetSearcherRList.onAddCallback = (ReorderableList list) =>
            {
                if (list.serializedProperty != null)
                {
                    list.serializedProperty.arraySize++;
                    list.index = list.serializedProperty.arraySize - 1;
                    //设置默认
                    SerializedProperty item   = list.serializedProperty.GetArrayElementAtIndex(list.index);
                    SerializedProperty folder = item.FindPropertyRelative("m_Folder");
                    folder.stringValue = "";
                    SerializedProperty includeSubfolder = item.FindPropertyRelative("m_IncludeSubfolder");
                    includeSubfolder.boolValue = true;
                    SerializedProperty fileNameFilterRegex = item.FindPropertyRelative("m_FileNameFilterRegex");
                    fileNameFilterRegex.stringValue = "";
                }
                else
                {
                    ReorderableList.defaultBehaviours.DoAddButton(list);
                }
            };

            //当删除元素时候的回调函数,实现删除元素时,有提示框跳出
            assetSearcherRList.onRemoveCallback = (ReorderableList list) =>
            {
                if (EditorUtility.DisplayDialog("提示!", "移除这个元素吗?", "移除", "取消"))
                {
                    ReorderableList.defaultBehaviours.DoRemoveButton(list);
                }
            };

            #endregion ---------------------------------------end------ 搜索路径条件列表--------------------------------------



            #region --------------------------------------------- 过滤条件列表--对搜索路径二次过滤-------------------------
            filterOperationRList = new ReorderableList(serializedObject, m_FilterOperations, true, true, true, true);
            //自定义列表名称
            filterOperationRList.drawHeaderCallback = (rect) =>
            {
                EditorGUI.LabelField(rect, "二次过滤条件列表");
            };
            //自定义绘制列表元素
            filterOperationRList.drawElementCallback = (rect, index, isActive, isFocused) =>
            {
                EditorGUIUtil.BeginLabelWidth(40);
                {
                    EditorGUI.PropertyField(rect, m_FilterOperations.GetArrayElementAtIndex(index), new GUIContent("" + index));
                }
                EditorGUIUtil.EndLableWidth();
            };

            //添加元素
            filterOperationRList.onAddCallback += (ReorderableList list) =>
            {
                m_FilterOperations.InsertArrayElementAtIndex(m_FilterOperations.arraySize);
            };

            //当删除元素时候的回调函数,实现删除元素时,有提示框跳出
            filterOperationRList.onRemoveCallback = (ReorderableList list) =>
            {
                if (EditorUtility.DisplayDialog("提示!", "移除这个元素吗?", "移除", "取消"))
                {
                    ReorderableList.defaultBehaviours.DoRemoveButton(list);
                }
            };

            #endregion ---------------------------------------end------ 对搜索路径二次过滤--------------------------------------
        }