Unity Button扩展
支持长按,进入 等事件,扩展原只支持click
using UnityEngine; using System.Collections; using UnityEngine.Events; using UnityEngine.EventSystems; using UnityEngine.UI; using System; [AddComponentMenu("Extensions/GAButton")] public sealed class GAButton : Selectable, IPointerDownHandler, IPointerExitHandler, IPointerUpHandler { public VoidFuncVoid onEnter = null; public VoidFuncVoid onExit = null; public VoidFuncVoid onOver = null; public VoidFuncVoid onTouchLong = null; private float touchLong = 0.5f; private Image img = null; bool isEnter = false; private float _current_touch=0.0f; protected override void Start() { this.img = this.GetComponent<Image>(); } void Update() { if (isEnter) { _current_touch += Time.deltaTime; if (_current_touch > touchLong) { if (onTouchLong != null) { onTouchLong(); _current_touch = 0.0f; } } if (onOver != null) onOver(); } } public override void OnPointerDown(PointerEventData eventData) { base.OnPointerDown(eventData); // Debug.Log("down"); } public override void OnPointerEnter(PointerEventData eventData) { base.OnPointerExit(eventData); // Debug.Log("enter"); if (onEnter != null) onEnter(); this.img.color = new Color32(193, 193, 193, 255); isEnter = true; } public override void OnPointerExit(PointerEventData eventData) { base.OnPointerExit(eventData); // Debug.Log("exit"); if (onExit != null) onExit(); this.img.color = new Color32(255, 255, 255, 255); isEnter = false; _current_touch = 0.0f; } public override void OnPointerUp(PointerEventData eventData) { base.OnPointerUp(eventData); // Debug.Log("up"); } }