1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
|
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);
}
}
}
}
|