事件接口
将含改代码的脚本挂到UI上,可实现相应效果
第一种写法
using UnityEngine; using UnityEngine.EventSystems; public class Juse : MonoBehaviour, IPointerEnterHandler, IPointerExitHandler,IPointerClickHandler,IPointerDownHandler,IPointerUpHandler { public void OnPointerClick(PointerEventData eventData) { Debug.Log("Click"); } public void OnPointerDown(PointerEventData eventData) { Debug.Log("Down"); } public void OnPointerUp(PointerEventData eventData) { Debug.Log("Up"); } public void OnPointerEnter(PointerEventData eventData) { Debug.Log("Enter"); } public void OnPointerExit(PointerEventData eventData) { Debug.Log("Exit"); } }
第二种写法
using UnityEngine; using UnityEngine.EventSystems; public class Juse : EventTrigger { public override void OnBeginDrag(PointerEventData data) { Debug.Log("OnBeginDrag called."); } public override void OnCancel(BaseEventData data) { Debug.Log("OnCancel called."); } public override void OnDeselect(BaseEventData data) { Debug.Log("OnDeselect called."); } public override void OnDrag(PointerEventData data) { Debug.Log("OnDrag called."); } public override void OnDrop(PointerEventData data) { Debug.Log("OnDrop called."); } public override void OnEndDrag(PointerEventData data) { Debug.Log("OnEndDrag called."); } public override void OnInitializePotentialDrag(PointerEventData data) { Debug.Log("OnInitializePotentialDrag called."); } public override void OnMove(AxisEventData data) { Debug.Log("OnMove called."); } public override void OnPointerClick(PointerEventData data) { Debug.Log("OnPointerClick called."); } public override void OnPointerDown(PointerEventData data) { Debug.Log("OnPointerDown called."); } public override void OnPointerEnter(PointerEventData data) { Debug.Log("OnPointerEnter called."); } public override void OnPointerExit(PointerEventData data) { Debug.Log("OnPointerExit called."); } public override void OnPointerUp(PointerEventData data) { Debug.Log("OnPointerUp called."); } public override void OnScroll(PointerEventData data) { Debug.Log("OnScroll called."); } public override void OnSelect(BaseEventData data) { Debug.Log("OnSelect called."); } public override void OnSubmit(BaseEventData data) { Debug.Log("OnSubmit called."); } public override void OnUpdateSelected(BaseEventData data) { Debug.Log("OnUpdateSelected called."); } }
第三种写法
using UnityEngine; using UnityEngine.EventSystems; public class Juse : EventTrigger { void Start() { EventTrigger trigger = GetComponent<EventTrigger>(); EventTrigger.Entry entry = new EventTrigger.Entry(); entry.eventID = EventTriggerType.PointerDown; entry.callback.AddListener((data) => { OnPointerDownDelegate((PointerEventData)data); }); trigger.triggers.Add(entry); } public void OnPointerDownDelegate(PointerEventData data) { Debug.Log("OnPointerDownDelegate called."); } }
也可以通过添加EventTrigger组件来调用有关函数。