-
-
Notifications
You must be signed in to change notification settings - Fork 10
/
Copy pathUIImageButton.cs
114 lines (101 loc) · 1.84 KB
/
UIImageButton.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
using UnityEngine;
[AddComponentMenu("NGUI/UI/Image Button")]
public class UIImageButton : MonoBehaviour
{
public UISprite target;
public string normalSprite;
public string hoverSprite;
public string pressedSprite;
public string disabledSprite;
public bool pixelSnap = true;
public bool isEnabled
{
get
{
Collider component = GetComponent<Collider>();
return (bool)component && component.enabled;
}
set
{
Collider component = GetComponent<Collider>();
if ((bool)component && component.enabled != value)
{
component.enabled = value;
UpdateImage();
}
}
}
private void OnEnable()
{
if (target == null)
{
target = GetComponentInChildren<UISprite>();
}
UpdateImage();
}
private void OnValidate()
{
if (target != null)
{
if (string.IsNullOrEmpty(normalSprite))
{
normalSprite = target.spriteName;
}
if (string.IsNullOrEmpty(hoverSprite))
{
hoverSprite = target.spriteName;
}
if (string.IsNullOrEmpty(pressedSprite))
{
pressedSprite = target.spriteName;
}
if (string.IsNullOrEmpty(disabledSprite))
{
disabledSprite = target.spriteName;
}
}
}
private void UpdateImage()
{
if (target != null)
{
if (isEnabled)
{
SetSprite((!UICamera.IsHighlighted(base.gameObject)) ? normalSprite : hoverSprite);
}
else
{
SetSprite(disabledSprite);
}
}
}
private void OnHover(bool isOver)
{
if (isEnabled && target != null)
{
SetSprite((!isOver) ? normalSprite : hoverSprite);
}
}
private void OnPress(bool pressed)
{
if (pressed)
{
SetSprite(pressedSprite);
}
else
{
UpdateImage();
}
}
private void SetSprite(string sprite)
{
if (!(target.atlas == null) && target.atlas.GetSprite(sprite) != null)
{
target.spriteName = sprite;
if (pixelSnap)
{
target.MakePixelPerfect();
}
}
}
}