-
Notifications
You must be signed in to change notification settings - Fork 5
/
Copy pathUIEffects.cs
80 lines (69 loc) · 2.66 KB
/
UIEffects.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
using UnityEngine;
using UnityEngine.EventSystems;
public class UIEffects : MonoBehaviour, IPointerEnterHandler, IPointerExitHandler
{
private enum UIEffectOptions { Grow, Shrink }
[Header("Effects")]
[SerializeField] private UIEffectOptions _UIEffect = UIEffectOptions.Grow;
[Header("Scaling Options")]
[SerializeField] private bool _RelativeToOriginalSize = true;
[SerializeField] private float _IncreaseSpeed = 1;
[Header("Minimal Size:")]
[SerializeField] private float _MinimalSize = 0.9f;
[Header("Maximal Size:")]
[SerializeField] private float _MaximalSize = 1.1f;
private Vector3 _OriginalSize;
private bool _MouseOver;
void OnEnable()
{
_MouseOver = false;
}
void Start()
{
_OriginalSize = transform.localScale;
if (_RelativeToOriginalSize)
{
_MinimalSize = _OriginalSize.y * _MinimalSize;
_MaximalSize = _OriginalSize.y * _MaximalSize;
_IncreaseSpeed = _IncreaseSpeed * ((_OriginalSize.x + _OriginalSize.y + _OriginalSize.z) / 3);
}
}
void Update()
{
switch (_UIEffect)
{
case UIEffectOptions.Grow:
if (_MouseOver)
{
if (transform.localScale.y < _MaximalSize)
transform.localScale += new Vector3(_IncreaseSpeed, _IncreaseSpeed, _IncreaseSpeed) * Time.unscaledDeltaTime;
}
else
if (transform.localScale.y > _OriginalSize.y)
transform.localScale -= new Vector3(_IncreaseSpeed, _IncreaseSpeed, _IncreaseSpeed) * Time.unscaledDeltaTime;
else
transform.localScale = new Vector3(_OriginalSize.x, _OriginalSize.y, _OriginalSize.z);
break;
case UIEffectOptions.Shrink:
if (_MouseOver)
{
if (transform.localScale.y > _MinimalSize)
transform.localScale -= new Vector3(_IncreaseSpeed, _IncreaseSpeed, _IncreaseSpeed) * Time.unscaledDeltaTime;
}
else
if (transform.localScale.y < _OriginalSize.y)
transform.localScale += new Vector3(_IncreaseSpeed, _IncreaseSpeed, _IncreaseSpeed) * Time.unscaledDeltaTime;
else
transform.localScale = new Vector3(_OriginalSize.x, _OriginalSize.y, _OriginalSize.z);
break;
}
}
public void OnPointerEnter(PointerEventData eventData)
{
_MouseOver = true;
}
public void OnPointerExit(PointerEventData eventData)
{
_MouseOver = false;
}
}