UGUI 监听鼠标移入、移出

IPointerEnterHandler

该接口实现方法如下:

public void OnPointerEnter(PointerEventData eventData)
{
    //当鼠标光标移入该对象时触发
}
 
 
  • 1
  • 2
  • 3
  • 4

IPointerExitHandler

该接口实现方法如下:

public void OnPointerExit(PointerEventData eventData)
{
    //当鼠标光标移出该对象时触发
}
 
 
  • 1
  • 2
  • 3
  • 4

利用 IPointerEnterHandler 和 IPointerExitHandler 接口,当鼠标移动到GameObject与移开,显示文本

public class UIEvent : MonoBehaviour, IPointerEnterHandler, IPointerExitHandler
{
    public PointerEvent onPointerEnter = new PointerEvent();
    public PointerEvent onPointerExit = new PointerEvent();

    public void OnPointerEnter(PointerEventData eventData)
    {
        if (onPointerEnter != null)
            onPointerEnter.Invoke(eventData);
    }

    public void OnPointerExit(PointerEventData eventData)
    {
        if (onPointerExit != null)
            onPointerExit.Invoke(eventData);
    }

    [Serializable]
    public class PointerEvent : UnityEvent<PointerEventData>
    {
        public PointerEvent() { }
    }

}
public class UILogComponent : MonoBehaviour
{
    public string displayContext = "";

    void Awake()
    {
        UIEventTrigger et = this.gameObject.AddComponent<UIEventTrigger>();
        et.onPointerEnter.AddListener(OnPointerEnterDisplayMode);
        et.onPointerExit.AddListener(OnPointerExitDisplayMode);
    }

    public void OnPointerEnterDisplayMode(UnityEngine.EventSystems.PointerEventData ed)
    {
        RectTransform rtT = ed.pointerCurrentRaycast.gameObject.GetComponent<RectTransform>();
        Vector3 pos = rtT.position;
        Vector2 size = rtT.sizeDelta;
        LogPanel.Instance.ShowTips(new Vector2(pos.x - size.x / 2, pos.y), displayContext);//在按钮的左侧出现
    }

    public void OnPointerExitDisplayMode(UnityEngine.EventSystems.PointerEventData ed)
    {
        LogPanel.Instance.ShowTips(false);
    }

}
public class LogPanel : MonoBehaviour
{
    public static LogPanel Instance;

    public GameObject goGroup;//当鼠标移动到此与移开时,显示文本
    public Text texTipsContext;//附属于goGroup


    //CustomGroup
    public Text texCustom;
    void Awake()
    {
        Instance = this;
    }

    public void ShowTips(Vector2 worldPos, string context)
    {
        texTipsContext.text = context;


        goGroup.GetComponent<RectTransform>().position = worldPos;

        ShowTips(true);
    }

    public void ShowTips(bool isShow)
    {
        goGroup.SetActive(isShow);
    }

}





  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值