-
Notifications
You must be signed in to change notification settings - Fork 14
Expand file tree
/
Copy pathTriggerSetup.cs
More file actions
126 lines (96 loc) · 4.01 KB
/
Copy pathTriggerSetup.cs
File metadata and controls
126 lines (96 loc) · 4.01 KB
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
116
117
118
119
120
121
122
123
124
125
126
using UnityEngine;
using UnityEngine.UI;
using UnityEngine.Events;
using UnityEngine.EventSystems;
using System.Collections;
public class TriggerSetup : MonoBehaviour
{
EventTrigger eventTrigger = null;
[SerializeField]
private Text textField = null;
[SerializeField]
private Toggle toggle = null;
// Use this for initialization
void Start()
{
eventTrigger = gameObject.GetComponent<EventTrigger>();
AddEventTrigger(OnPointerClick, EventTriggerType.PointerClick);
AddEventTrigger(OnPointerEnter, EventTriggerType.PointerEnter, toggle);
AddEventTrigger(OnPointerExit, EventTriggerType.PointerExit);
AddEventTrigger(OnPointerDown, EventTriggerType.PointerDown);
AddEventTrigger(OnPointerUp, EventTriggerType.PointerUp);
AddEventTrigger(OnDrag, EventTriggerType.Drag);
AddEventTrigger(OnDrop, EventTriggerType.Drop);
AddEventTrigger(OnScroll, EventTriggerType.Scroll);
}
#region TriggerEventsSetup
// Use listener with no parameters
private void AddEventTrigger(UnityAction action, EventTriggerType triggerType)
{
// Create a nee TriggerEvent and add a listener
EventTrigger.TriggerEvent trigger = new EventTrigger.TriggerEvent();
trigger.AddListener((eventData) => action()); // ignore event data
// Create and initialise EventTrigger.Entry using the created TriggerEvent
EventTrigger.Entry entry = new EventTrigger.Entry() { callback = trigger, eventID = triggerType };
// Add the EventTrigger.Entry to delegates list on the EventTrigger
eventTrigger.delegates.Add(entry);
}
// Use listener that uses the BaseEventData passed to the Trigger
private void AddEventTrigger(UnityAction<BaseEventData> action, EventTriggerType triggerType)
{
// Create a nee TriggerEvent and add a listener
EventTrigger.TriggerEvent trigger = new EventTrigger.TriggerEvent();
trigger.AddListener((eventData) => action(eventData)); // capture and pass the event data to the listener
// Create and initialise EventTrigger.Entry using the created TriggerEvent
EventTrigger.Entry entry = new EventTrigger.Entry() { callback = trigger, eventID = triggerType };
// Add the EventTrigger.Entry to delegates list on the EventTrigger
eventTrigger.delegates.Add(entry);
}
// Use listener that uses additional argument
private void AddEventTrigger(UnityAction<Toggle> action, EventTriggerType triggerType, Toggle toggle)
{
// Create a nee TriggerEvent and add a listener
EventTrigger.TriggerEvent trigger = new EventTrigger.TriggerEvent();
trigger.AddListener((eventData) => action(toggle)); // pass additonal argument to the listener
// Create and initialise EventTrigger.Entry using the created TriggerEvent
EventTrigger.Entry entry = new EventTrigger.Entry() { callback = trigger, eventID = triggerType };
// Add the EventTrigger.Entry to delegates list on the EventTrigger
eventTrigger.delegates.Add(entry);
}
#endregion
#region Callbacks
private void OnPointerClick(BaseEventData data)
{
//textField.text = "OnPointerClick " + data.selectedObject;
Debug.Log("OnPointerClick ");
}
private void OnPointerEnter(Toggle toggle)
{
textField.text = "OnPointerEnter: Toggle Status " + toggle.isOn;
}
private void OnPointerExit()
{
textField.text = "OnPointerExit";
}
private void OnPointerDown()
{
textField.text = "OnPointerDown";
}
private void OnPointerUp()
{
textField.text = "OnPointerUp";
}
private void OnDrag()
{
textField.text = "OnDrag";
}
private void OnDrop()
{
textField.text = "OnDrop";
}
private void OnScroll()
{
textField.text = "OnScroll";
}
#endregion
}