上面这个脚本挂在一个空物体上,在图形界面给button这个变量赋值就可以使用了。using UnityEngine; using System.Collections; using UnityEngine.UI; using UnityEngine.EventSystems; using UnityEngine.Events; public class UIMain : MonoBehaviour { public Button button; void Start() { EventTriggerListener.Get(button.gameObject).onClick = OnButtonClick; } private void OnButtonClick(GameObject go) { //在这里监听按钮的点击事件 if (go == button.gameObject) { Debug.Log("DoSomeThings"); } } }
using UnityEngine;using System.Collections;using UnityEngine.EventSystems;public class EventTriggerListener : UnityEngine.EventSystems.EventTrigger{ public delegate void VoidDelegate(GameObject go); public VoidDelegate onClick; public VoidDelegate onDown; public VoidDelegate onEnter; public VoidDelegate onExit; public VoidDelegate onUp; public VoidDelegate onSelect; public VoidDelegate onUpdateSelect;static public EventTriggerListener Get(GameObject go) { EventTriggerListener listener = go.GetComponent<EventTriggerListener>(); if (listener == null) listener = go.AddComponent<EventTriggerListener>(); return listener; } public override void OnPointerClick(PointerEventData eventData) { if (onClick != null) onClick(this.gameObject); } public override void OnPointerDown(PointerEventData eventData) { if (onDown != null) onDown(gameObject); } public override void OnPointerEnter(PointerEventData eventData) { if (onEnter != null) onEnter(gameObject); } public override void OnPointerExit(PointerEventData eventData) { if (onExit != null) onExit(gameObject); } public override void OnPointerUp(PointerEventData eventData) { if (onUp != null) onUp(gameObject); } public override void OnSelect(BaseEventData eventData) { if (onSelect != null) onSelect(gameObject); } public override void OnUpdateSelected(BaseEventData eventData) { if (onUpdateSelect != null) onUpdateSelect(gameObject); } }
上面这个类继承UnityEngine.EventSystems.EventTrigger类后重写该类里的一些方法,这个父类实现了Button里所有的接口(应该是吧,反正我看一般需要的都实现了)。下面那些对方法的覆写,就相当于在绑定委托。
Get方法的功能是获取一个游戏对象上的此功能组件,如果没有就加一个这个组件,同时将该组件返回。
这样就可以用一个简单的工具类自己实现按钮的功能了。
尝试自己写一个工具类实现UGUI的按钮功能
最新推荐文章于 2022-01-21 16:48:38 发布