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(); }
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); } }
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------ 规则列表-------------------------------------- }
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(); }
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------ 对搜索路径二次过滤-------------------------------------- }