-
-
Notifications
You must be signed in to change notification settings - Fork 2
/
ClickButtonEditor.cs
115 lines (97 loc) 路 4.17 KB
/
ClickButtonEditor.cs
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
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
using AdrianMiasik.Components.Base;
using UnityEditor;
using UnityEditor.UI;
using UnityEngine;
namespace AdrianMiasik.Editor
{
[CustomEditor(typeof(ClickButton))]
public class ClickButtonEditor : ImageEditor
{
// Properties
private SerializedProperty containerTarget;
private SerializedProperty enableClickSound;
private SerializedProperty clickSound;
private SerializedProperty isPitchVariationOn;
private SerializedProperty lowestPitch;
private SerializedProperty highestPitch;
private SerializedProperty clickHoldScale;
private SerializedProperty clickReleaseScale;
private SerializedProperty holdRamp;
private SerializedProperty isHoldable;
// Unity Events
private SerializedProperty onDown;
private SerializedProperty onUp;
private SerializedProperty onClick;
protected override void OnEnable()
{
base.OnEnable();
containerTarget = serializedObject.FindProperty("m_containerTarget");
enableClickSound = serializedObject.FindProperty("m_enableClickSound");
clickSound = serializedObject.FindProperty("m_clickSound");
isPitchVariationOn = serializedObject.FindProperty("m_isPitchVariationOn");
lowestPitch = serializedObject.FindProperty("m_lowestPitch");
highestPitch = serializedObject.FindProperty("m_highestPitch");
clickHoldScale = serializedObject.FindProperty("m_clickHoldScale");
clickReleaseScale = serializedObject.FindProperty("m_clickReleaseScale");
holdRamp = serializedObject.FindProperty("m_holdRamp");
isHoldable = serializedObject.FindProperty("m_isHoldable");
onDown = serializedObject.FindProperty("m_onDown");
onUp = serializedObject.FindProperty("m_onUp");
onClick = serializedObject.FindProperty("m_onClick");
}
public override void OnInspectorGUI()
{
// Define style
GUIStyle style = new GUIStyle
{
fontStyle = FontStyle.Bold,
normal =
{
textColor = Color.white
}
};
// Draw title
EditorGUILayout.LabelField("Image", style);
base.OnInspectorGUI();
serializedObject.Update();
// Open formatting
EditorGUILayout.BeginVertical();
EditorGUILayout.Space();
// Draw title
EditorGUILayout.LabelField("Click Button", style);
// Fetch target script
ClickButton clickButton = (ClickButton) target;
// Properties
EditorGUILayout.PropertyField(containerTarget);
if (enableClickSound.boolValue)
{
EditorGUILayout.PropertyField(clickSound);
EditorGUILayout.PropertyField(isPitchVariationOn);
if (isPitchVariationOn.boolValue)
{
EditorGUILayout.PropertyField(lowestPitch);
EditorGUILayout.PropertyField(highestPitch);
EditorGUILayout.MinMaxSlider("Pitch Variation", ref clickButton.m_lowestPitch, ref clickButton.m_highestPitch, 0, 2);
EditorGUILayout.Space();
}
}
EditorGUILayout.PropertyField(clickHoldScale);
EditorGUILayout.PropertyField(clickReleaseScale);
EditorGUILayout.PropertyField(holdRamp);
EditorGUILayout.PropertyField(isHoldable);
// Draw inherited variation class property fields
DrawInheritorFields();
// Unity Events
EditorGUILayout.PropertyField(onDown);
EditorGUILayout.PropertyField(onUp);
EditorGUILayout.PropertyField(onClick);
// Close formatting
EditorGUILayout.EndVertical();
serializedObject.ApplyModifiedProperties();
}
protected virtual void DrawInheritorFields()
{
// Nothing by default
}
}
}