399 lines
		
	
	
		
			14 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
		
		
			
		
	
	
			399 lines
		
	
	
		
			14 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
|  | namespace UnityEngine.EventSystems | ||
|  | { | ||
|  |     /// <summary> | ||
|  |     /// Base class that all EventSystem events inherit from. | ||
|  |     /// </summary> | ||
|  |     public interface IEventSystemHandler | ||
|  |     { | ||
|  |     } | ||
|  | 
 | ||
|  |     /// <summary> | ||
|  |     /// Interface to implement if you wish to receive OnPointerMove callbacks. | ||
|  |     /// </summary> | ||
|  |     /// <remarks> | ||
|  |     /// Criteria for this event is implementation dependent. For example see StandAloneInputModule. | ||
|  |     /// </remarks> | ||
|  |     public interface IPointerMoveHandler : IEventSystemHandler | ||
|  |     { | ||
|  |         /// <summary> | ||
|  |         /// Use this callback to detect pointer move events | ||
|  |         /// </summary> | ||
|  |         void OnPointerMove(PointerEventData eventData); | ||
|  |     } | ||
|  | 
 | ||
|  |     /// <summary> | ||
|  |     /// Interface to implement if you wish to receive OnPointerEnter callbacks. | ||
|  |     /// </summary> | ||
|  |     /// <remarks> | ||
|  |     /// Criteria for this event is implementation dependent. For example see StandAloneInputModule. | ||
|  |     /// </remarks> | ||
|  |     public interface IPointerEnterHandler : IEventSystemHandler | ||
|  |     { | ||
|  |         /// <summary> | ||
|  |         /// Use this callback to detect pointer enter events | ||
|  |         /// </summary> | ||
|  |         void OnPointerEnter(PointerEventData eventData); | ||
|  |     } | ||
|  | 
 | ||
|  |     /// <summary> | ||
|  |     /// Interface to implement if you wish to receive OnPointerExit callbacks. | ||
|  |     /// </summary> | ||
|  |     /// <remarks> | ||
|  |     /// Criteria for this event is implementation dependent. For example see StandAloneInputModule. | ||
|  |     /// </remarks> | ||
|  |     public interface IPointerExitHandler : IEventSystemHandler | ||
|  |     { | ||
|  |         /// <summary> | ||
|  |         /// Use this callback to detect pointer exit events | ||
|  |         /// </summary> | ||
|  |         void OnPointerExit(PointerEventData eventData); | ||
|  |     } | ||
|  | 
 | ||
|  |     /// <summary> | ||
|  |     /// Interface to implement if you wish to receive OnPointerDown callbacks. | ||
|  |     /// </summary> | ||
|  |     /// <remarks> | ||
|  |     /// Criteria for this event is implementation dependent. For example see StandAloneInputModule. | ||
|  |     /// </remarks> | ||
|  |     public interface IPointerDownHandler : IEventSystemHandler | ||
|  |     { | ||
|  |         /// <summary> | ||
|  |         /// Use this callback to detect pointer down events. | ||
|  |         /// </summary> | ||
|  |         void OnPointerDown(PointerEventData eventData); | ||
|  |     } | ||
|  | 
 | ||
|  |     /// <summary> | ||
|  |     /// Interface to implement if you wish to receive OnPointerUp callbacks. | ||
|  |     /// Note: In order to receive OnPointerUp callbacks, you must also implement the EventSystems.IPointerDownHandler|IPointerDownHandler interface | ||
|  |     /// </summary> | ||
|  |     /// <remarks> | ||
|  |     /// Criteria for this event is implementation dependent. For example see StandAloneInputModule. | ||
|  |     /// </remarks> | ||
|  |     public interface IPointerUpHandler : IEventSystemHandler | ||
|  |     { | ||
|  |         /// <summary> | ||
|  |         /// Use this callback to detect pointer up events. | ||
|  |         /// </summary> | ||
|  |         void OnPointerUp(PointerEventData eventData); | ||
|  |     } | ||
|  | 
 | ||
|  |     /// <summary> | ||
|  |     /// Interface to implement if you wish to receive OnPointerClick callbacks. | ||
|  |     /// </summary> | ||
|  |     /// <remarks> | ||
|  |     /// Criteria for this event is implementation dependent. For example see StandAloneInputModule. | ||
|  |     /// </remarks> | ||
|  |     /// <remarks> | ||
|  |     /// Use the IPointerClickHandler Interface to handle click input using OnPointerClick callbacks. Ensure an Event System exists in the Scene to allow click detection. For click detection on non-UI GameObjects, ensure a EventSystems.PhysicsRaycaster is attached to the Camera. | ||
|  |     /// </remarks> | ||
|  |     /// <example> | ||
|  |     /// <code> | ||
|  |     /// <![CDATA[ | ||
|  |     /// using UnityEngine; | ||
|  |     /// using UnityEngine.EventSystems; | ||
|  |     /// | ||
|  |     /// public class Example : MonoBehaviour, IPointerClickHandler | ||
|  |     /// { | ||
|  |     ///     //Detect if a click occurs | ||
|  |     ///     public void OnPointerClick(PointerEventData pointerEventData) | ||
|  |     ///     { | ||
|  |     ///         //Output to console the clicked GameObject's name and the following message. You can replace this with your own actions for when clicking the GameObject. | ||
|  |     ///         Debug.Log(name + " Game Object Clicked!"); | ||
|  |     ///     } | ||
|  |     /// } | ||
|  |     /// ]]> | ||
|  |     ///</code> | ||
|  |     /// </example> | ||
|  |     public interface IPointerClickHandler : IEventSystemHandler | ||
|  |     { | ||
|  |         /// <summary> | ||
|  |         /// Use this callback to detect clicks. | ||
|  |         /// </summary> | ||
|  |         void OnPointerClick(PointerEventData eventData); | ||
|  |     } | ||
|  | 
 | ||
|  |     /// <summary> | ||
|  |     /// Interface to implement if you wish to receive OnBeginDrag callbacks. | ||
|  |     /// Note: You need to implement IDragHandler in addition to IBeginDragHandler. | ||
|  |     /// </summary> | ||
|  |     /// <remarks> | ||
|  |     /// Criteria for this event is implementation dependent. For example see StandAloneInputModule. | ||
|  |     /// </remarks> | ||
|  |     public interface IBeginDragHandler : IEventSystemHandler | ||
|  |     { | ||
|  |         /// <summary> | ||
|  |         /// Called by a BaseInputModule before a drag is started. | ||
|  |         /// </summary> | ||
|  |         void OnBeginDrag(PointerEventData eventData); | ||
|  |     } | ||
|  | 
 | ||
|  |     /// <summary> | ||
|  |     /// Interface to implement if you wish to receive OnInitializePotentialDrag callbacks. | ||
|  |     /// </summary> | ||
|  |     /// <remarks> | ||
|  |     /// Criteria for this event is implementation dependent. For example see StandAloneInputModule. | ||
|  |     /// </remarks> | ||
|  |     public interface IInitializePotentialDragHandler : IEventSystemHandler | ||
|  |     { | ||
|  |         /// <summary> | ||
|  |         /// Called by a BaseInputModule when a drag has been found but before it is valid to begin the drag. | ||
|  |         /// </summary> | ||
|  |         void OnInitializePotentialDrag(PointerEventData eventData); | ||
|  |     } | ||
|  | 
 | ||
|  |     /// <summary> | ||
|  |     /// Interface to implement if you wish to receive OnDrag callbacks. | ||
|  |     /// </summary> | ||
|  |     /// <remarks> | ||
|  |     /// Criteria for this event is implementation dependent. For example see StandAloneInputModule. | ||
|  |     /// </remarks> | ||
|  |     /// <example> | ||
|  |     /// <code> | ||
|  |     /// <![CDATA[ | ||
|  |     /// using UnityEngine; | ||
|  |     /// using UnityEngine.EventSystems; | ||
|  |     /// using UnityEngine.UI; | ||
|  |     /// | ||
|  |     /// [RequireComponent(typeof(Image))] | ||
|  |     /// public class DragMe : MonoBehaviour, IBeginDragHandler, IDragHandler, IEndDragHandler | ||
|  |     /// { | ||
|  |     ///     public bool dragOnSurfaces = true; | ||
|  |     /// | ||
|  |     ///     private GameObject m_DraggingIcon; | ||
|  |     ///     private RectTransform m_DraggingPlane; | ||
|  |     /// | ||
|  |     ///     public void OnBeginDrag(PointerEventData eventData) | ||
|  |     ///     { | ||
|  |     ///         var canvas = FindInParents<Canvas>(gameObject); | ||
|  |     ///         if (canvas == null) | ||
|  |     ///             return; | ||
|  |     /// | ||
|  |     ///         // We have clicked something that can be dragged. | ||
|  |     ///         // What we want to do is create an icon for this. | ||
|  |     ///         m_DraggingIcon = new GameObject("icon"); | ||
|  |     /// | ||
|  |     ///         m_DraggingIcon.transform.SetParent(canvas.transform, false); | ||
|  |     ///         m_DraggingIcon.transform.SetAsLastSibling(); | ||
|  |     /// | ||
|  |     ///         var image = m_DraggingIcon.AddComponent<Image>(); | ||
|  |     /// | ||
|  |     ///         image.sprite = GetComponent<Image>().sprite; | ||
|  |     ///         image.SetNativeSize(); | ||
|  |     /// | ||
|  |     ///         if (dragOnSurfaces) | ||
|  |     ///             m_DraggingPlane = transform as RectTransform; | ||
|  |     ///         else | ||
|  |     ///             m_DraggingPlane = canvas.transform as RectTransform; | ||
|  |     /// | ||
|  |     ///         SetDraggedPosition(eventData); | ||
|  |     ///     } | ||
|  |     /// | ||
|  |     ///     public void OnDrag(PointerEventData data) | ||
|  |     ///     { | ||
|  |     ///         if (m_DraggingIcon != null) | ||
|  |     ///             SetDraggedPosition(data); | ||
|  |     ///     } | ||
|  |     /// | ||
|  |     ///     private void SetDraggedPosition(PointerEventData data) | ||
|  |     ///     { | ||
|  |     ///         if (dragOnSurfaces && data.pointerEnter != null && data.pointerEnter.transform as RectTransform != null) | ||
|  |     ///             m_DraggingPlane = data.pointerEnter.transform as RectTransform; | ||
|  |     /// | ||
|  |     ///         var rt = m_DraggingIcon.GetComponent<RectTransform>(); | ||
|  |     ///         Vector3 globalMousePos; | ||
|  |     ///         if (RectTransformUtility.ScreenPointToWorldPointInRectangle(m_DraggingPlane, data.position, data.pressEventCamera, out globalMousePos)) | ||
|  |     ///         { | ||
|  |     ///             rt.position = globalMousePos; | ||
|  |     ///             rt.rotation = m_DraggingPlane.rotation; | ||
|  |     ///         } | ||
|  |     ///     } | ||
|  |     /// | ||
|  |     ///     public void OnEndDrag(PointerEventData eventData) | ||
|  |     ///     { | ||
|  |     ///         if (m_DraggingIcon != null) | ||
|  |     ///             Destroy(m_DraggingIcon); | ||
|  |     ///     } | ||
|  |     /// | ||
|  |     ///     static public T FindInParents<T>(GameObject go) where T : Component | ||
|  |     ///     { | ||
|  |     ///         if (go == null) return null; | ||
|  |     ///         var comp = go.GetComponent<T>(); | ||
|  |     /// | ||
|  |     ///         if (comp != null) | ||
|  |     ///             return comp; | ||
|  |     /// | ||
|  |     ///         Transform t = go.transform.parent; | ||
|  |     ///         while (t != null && comp == null) | ||
|  |     ///         { | ||
|  |     ///             comp = t.gameObject.GetComponent<T>(); | ||
|  |     ///             t = t.parent; | ||
|  |     ///         } | ||
|  |     ///         return comp; | ||
|  |     ///     } | ||
|  |     /// } | ||
|  |     /// ]]> | ||
|  |     ///</code> | ||
|  |     /// </example> | ||
|  |     public interface IDragHandler : IEventSystemHandler | ||
|  |     { | ||
|  |         /// <summary> | ||
|  |         /// When dragging is occurring this will be called every time the cursor is moved. | ||
|  |         /// </summary> | ||
|  |         void OnDrag(PointerEventData eventData); | ||
|  |     } | ||
|  | 
 | ||
|  |     /// <summary> | ||
|  |     /// Interface to implement if you wish to receive OnEndDrag callbacks. | ||
|  |     /// Note: You need to implement IDragHandler in addition to IEndDragHandler. | ||
|  |     /// </summary> | ||
|  |     /// <remarks> | ||
|  |     /// Criteria for this event is implementation dependent. For example see StandAloneInputModule. | ||
|  |     /// </remarks> | ||
|  |     public interface IEndDragHandler : IEventSystemHandler | ||
|  |     { | ||
|  |         /// <summary> | ||
|  |         /// Called by a BaseInputModule when a drag is ended. | ||
|  |         /// </summary> | ||
|  |         void OnEndDrag(PointerEventData eventData); | ||
|  |     } | ||
|  | 
 | ||
|  |     /// <summary> | ||
|  |     /// Interface to implement if you wish to receive OnDrop callbacks. | ||
|  |     /// </summary> | ||
|  |     /// <example> | ||
|  |     /// <code> | ||
|  |     /// <![CDATA[ | ||
|  |     /// using UnityEngine; | ||
|  |     /// using UnityEngine.EventSystems; | ||
|  |     /// | ||
|  |     /// public class DropMe : MonoBehaviour, IDropHandler | ||
|  |     /// { | ||
|  |     ///     public void OnDrop(PointerEventData data) | ||
|  |     ///     { | ||
|  |     ///         if (data.pointerDrag != null) | ||
|  |     ///         { | ||
|  |     ///             Debug.Log ("Dropped object was: "  + data.pointerDrag); | ||
|  |     ///         } | ||
|  |     ///     } | ||
|  |     /// } | ||
|  |     /// ]]> | ||
|  |     ///</code> | ||
|  |     /// </example> | ||
|  |     /// <remarks> | ||
|  |     /// Criteria for this event is implementation dependent. For example see StandAloneInputModule. | ||
|  |     /// </remarks> | ||
|  |     public interface IDropHandler : IEventSystemHandler | ||
|  |     { | ||
|  |         /// <summary> | ||
|  |         /// Called by a BaseInputModule on a target that can accept a drop. | ||
|  |         /// </summary> | ||
|  |         void OnDrop(PointerEventData eventData); | ||
|  |     } | ||
|  | 
 | ||
|  |     /// <summary> | ||
|  |     /// Interface to implement if you wish to receive OnScroll callbacks. | ||
|  |     /// </summary> | ||
|  |     /// <remarks> | ||
|  |     /// Criteria for this event is implementation dependent. For example see StandAloneInputModule. | ||
|  |     /// </remarks> | ||
|  |     public interface IScrollHandler : IEventSystemHandler | ||
|  |     { | ||
|  |         /// <summary> | ||
|  |         /// Use this callback to detect scroll events. | ||
|  |         /// </summary> | ||
|  |         void OnScroll(PointerEventData eventData); | ||
|  |     } | ||
|  | 
 | ||
|  |     /// <summary> | ||
|  |     /// Interface to implement if you wish to receive OnUpdateSelected callbacks. | ||
|  |     /// </summary> | ||
|  |     /// <remarks> | ||
|  |     /// Criteria for this event is implementation dependent. For example see StandAloneInputModule. | ||
|  |     /// </remarks> | ||
|  |     public interface IUpdateSelectedHandler : IEventSystemHandler | ||
|  |     { | ||
|  |         /// <summary> | ||
|  |         /// Called by the EventSystem when the object associated with this EventTrigger is updated. | ||
|  |         /// </summary> | ||
|  |         /// <example> | ||
|  |         /// <code> | ||
|  |         /// <![CDATA[ | ||
|  |         /// using UnityEngine; | ||
|  |         /// using UnityEngine.EventSystems; | ||
|  |         /// | ||
|  |         /// public class UpdateSelectedExample : MonoBehaviour, IUpdateSelectedHandler | ||
|  |         /// { | ||
|  |         ///     public void OnUpdateSelected(BaseEventData data) | ||
|  |         ///     { | ||
|  |         ///         Debug.Log("OnUpdateSelected called."); | ||
|  |         ///     } | ||
|  |         /// } | ||
|  |         /// ]]> | ||
|  |         ///</code> | ||
|  |         /// </example> | ||
|  |         void OnUpdateSelected(BaseEventData eventData); | ||
|  |     } | ||
|  | 
 | ||
|  |     /// <summary> | ||
|  |     /// Interface to implement if you wish to receive OnSelect callbacks. | ||
|  |     /// </summary> | ||
|  |     /// <remarks> | ||
|  |     /// Criteria for this event is implementation dependent. For example see StandAloneInputModule. | ||
|  |     /// </remarks> | ||
|  |     public interface ISelectHandler : IEventSystemHandler | ||
|  |     { | ||
|  |         void OnSelect(BaseEventData eventData); | ||
|  |     } | ||
|  | 
 | ||
|  |     /// <summary> | ||
|  |     /// Interface to implement if you wish to receive OnDeselect callbacks. | ||
|  |     /// </summary> | ||
|  |     /// <remarks> | ||
|  |     /// Criteria for this event is implementation dependent. For example see StandAloneInputModule. | ||
|  |     /// </remarks> | ||
|  |     public interface IDeselectHandler : IEventSystemHandler | ||
|  |     { | ||
|  |         /// <summary> | ||
|  |         /// Called by the EventSystem when a new object is being selected. | ||
|  |         /// </summary> | ||
|  |         void OnDeselect(BaseEventData eventData); | ||
|  |     } | ||
|  | 
 | ||
|  |     /// <summary> | ||
|  |     /// Interface to implement if you wish to receive OnMove callbacks. | ||
|  |     /// </summary> | ||
|  |     /// <remarks> | ||
|  |     /// Criteria for this event is implementation dependent. For example see StandAloneInputModule. | ||
|  |     /// </remarks> | ||
|  |     public interface IMoveHandler : IEventSystemHandler | ||
|  |     { | ||
|  |         /// <summary> | ||
|  |         /// Called by a BaseInputModule when a move event occurs. | ||
|  |         /// </summary> | ||
|  |         void OnMove(AxisEventData eventData); | ||
|  |     } | ||
|  | 
 | ||
|  |     /// <summary> | ||
|  |     /// Interface to implement if you wish to receive OnSubmit callbacks. | ||
|  |     /// </summary> | ||
|  |     /// <remarks> | ||
|  |     /// Criteria for this event is implementation dependent. For example see StandAloneInputModule. | ||
|  |     /// </remarks> | ||
|  |     public interface ISubmitHandler : IEventSystemHandler | ||
|  |     { | ||
|  |         void OnSubmit(BaseEventData eventData); | ||
|  |     } | ||
|  | 
 | ||
|  |     /// <summary> | ||
|  |     /// Interface to implement if you wish to receive OnCancel callbacks. | ||
|  |     /// </summary> | ||
|  |     /// <remarks> | ||
|  |     /// Criteria for this event is implementation dependent. For example see StandAloneInputModule. | ||
|  |     /// </remarks> | ||
|  |     public interface ICancelHandler : IEventSystemHandler | ||
|  |     { | ||
|  |         void OnCancel(BaseEventData eventData); | ||
|  |     } | ||
|  | } |