using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEditor; using UnityEngine.UI; namespace UIExt { [CustomEditor(typeof(GridLayoutGroupExt), false)] public class GridLayoutGroupExtEdtor : Editor { GridLayoutGroupExt layout; SerializedProperty m_Padding; SerializedProperty m_ScrollMode; SerializedProperty m_MovementType; static Color s_LightGray = new Color(0.7f, 0.7f, 0.7f, 1); int m_ItemCount; // 测试 float m_HorizontalScrollAmount; float m_VerticalScrollAmount; protected virtual void OnEnable() { m_ItemCount = 0; m_Padding = serializedObject.FindProperty("m_Padding"); m_ScrollMode = serializedObject.FindProperty("m_ScrollMode"); m_MovementType = serializedObject.FindProperty("m_MovementType"); } public override void OnInspectorGUI() { GUI.changed = false; layout = this.target as GridLayoutGroupExt; if (layout == null) return; GUILayout.Space(10f); EditorGUILayout.BeginVertical(); layout.scrollRect = EditorGUILayout.ObjectField("Scroll Rect", layout.scrollRect, typeof(ScrollRect), true) as ScrollRect; layout.content = EditorGUILayout.ObjectField("Content", layout.content, typeof(RectTransform), true) as RectTransform; layout.itemTemplate = EditorGUILayout.ObjectField("Item Template", layout.itemTemplate, typeof(LayoutItem), true) as LayoutItem; layout.cellSize = EditorGUILayout.Vector2IntField("Cell Size", layout.cellSize); layout.spacing = EditorGUILayout.Vector2IntField("Spacing", layout.spacing); EditorGUILayout.PropertyField(m_Padding, true); layout.rowCount = EditorGUILayout.IntField("Row Count", layout.rowCount); layout.columCount = EditorGUILayout.IntField("Colum Count", layout.columCount); EditorGUILayout.PropertyField(m_ScrollMode, true); EditorGUILayout.PropertyField(m_MovementType, true); GUILayout.Space(5f); float y = EditorGUILayout.GetControlRect().y; float x = EditorGUILayout.GetControlRect().x; float w = EditorGUILayout.GetControlRect().width; EditorGUI.DrawRect(new Rect(x, y, w, 95), s_LightGray); GUILayout.Space(-50); var centeredStyle = GUI.skin.GetStyle("Label"); centeredStyle.alignment = TextAnchor.UpperCenter; GUILayout.Label("测试", centeredStyle); Rect rect = EditorGUILayout.GetControlRect(); GUIUtils.DrawHorizontalline(Color.gray, new Vector2(rect.x, rect.y), rect.width); EditorGUILayout.BeginHorizontal(); m_ItemCount = EditorGUILayout.IntSlider("测试生成Item数量", m_ItemCount, 0, 50); if(GUILayout.Button("生成", GUILayout.Width(40))) { } EditorGUILayout.EndHorizontal(); m_HorizontalScrollAmount = EditorGUILayout.Slider("水平滑动值", m_HorizontalScrollAmount, 0, 1000); m_VerticalScrollAmount = EditorGUILayout.Slider("垂直滑动值", m_VerticalScrollAmount, 0, 1000); GUILayout.Space(20f); EditorGUILayout.EndVertical(); if(GUI.changed) { EditorUtility.SetDirty(layout); } } } }