Skip to content

Instantly share code, notes, and snippets.

@miguel12345
Created October 12, 2016 22:01
Show Gist options
  • Select an option

  • Save miguel12345/43c51da6acf162fc10f5f69c5b24b288 to your computer and use it in GitHub Desktop.

Select an option

Save miguel12345/43c51da6acf162fc10f5f69c5b24b288 to your computer and use it in GitHub Desktop.
using UnityEngine;
using System.Collections;
using UnityEngine.EventSystems;
using UnityEngine.UI;
using UnityEngine.Events;
public static class PointerCallbackExtensions {
static void AddPointerEventCallback(this GameObject obj,EventTriggerType triggerType,UnityAction<BaseEventData> ev) {
var eventTriggerEntry = obj.GetEventTriggerEntry (triggerType);
eventTriggerEntry.callback.AddListener (ev);
}
public static void AddPointerEventCallback(this Graphic graphic,EventTriggerType triggerType,UnityAction<BaseEventData> ev) {
graphic.gameObject.AddPointerEventCallback (triggerType, ev);
}
public static void AddPointerEventCallback(this Renderer renderer,EventTriggerType triggerType,UnityAction<BaseEventData> ev) {
renderer.gameObject.AddPointerEventCallback (triggerType, ev);
}
static EventTrigger.Entry GetEventTriggerEntry(this GameObject obj,EventTriggerType triggerType) {
EventTrigger trigger = obj.GetComponent<EventTrigger> ();
if (trigger == null)
trigger = obj.AddComponent<EventTrigger> ();
var eventTriggerEntry = trigger.triggers.Find (entry => entry.eventID ==triggerType);
if (eventTriggerEntry == null) {
eventTriggerEntry = new EventTrigger.Entry ();
eventTriggerEntry.eventID = triggerType;
trigger.triggers.Add (eventTriggerEntry);
}
return eventTriggerEntry;
}
public static void RemovePointerEventCallback(this Graphic graphic,EventTriggerType triggerType,UnityAction<BaseEventData> ev) {
RemovePointerEventCallback(graphic.gameObject,triggerType,ev);
}
public static void RemovePointerEventCallback(this Renderer renderer,EventTriggerType triggerType,UnityAction<BaseEventData> ev) {
RemovePointerEventCallback(renderer.gameObject,triggerType,ev);
}
static void RemovePointerEventCallback(this GameObject gameObject,EventTriggerType triggerType,UnityAction<BaseEventData> ev) {
var eventTriggerEntry = gameObject.GetEventTriggerEntry (triggerType);
eventTriggerEntry.callback.RemoveListener (ev);
}
public static void RemovePointerEventCallbacks(this Graphic graphic,EventTriggerType triggerType) {
RemovePointerEventCallbacks (graphic.gameObject, triggerType);
}
public static void RemovePointerEventCallbacks(this Renderer renderer,EventTriggerType triggerType) {
RemovePointerEventCallbacks (renderer.gameObject, triggerType);
}
static void RemovePointerEventCallbacks(this GameObject gameObject,EventTriggerType triggerType) {
var eventTriggerEntry = gameObject.GetEventTriggerEntry (triggerType);
eventTriggerEntry.callback.RemoveAllListeners ();
}
}
using UnityEngine;
using System.Collections;
using UnityEngine.UI;
using UnityEngine.EventSystems;
public class Usage : MonoBehaviour {
public Image Draggable;
void OnEnable() {
Draggable.AddPointerEventCallback (EventTriggerType.Drag, OnDrag);
}
void OnDisable() {
Draggable.RemovePointerEventCallback (EventTriggerType.Drag, OnDrag);
}
void OnDrag(BaseEventData data) {
PointerEventData pointerData = (PointerEventData)data;
var previousPosition = Draggable.transform.position;
var newPosition = Camera.main.ScreenToWorldPoint(pointerData.position);
newPosition.z = previousPosition.z;
Draggable.transform.position = newPosition;
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment