Unity:UI进入离开事件

1 脚本解析

VideoCtrlShowHide脚本是一个用于控制游戏内视频控制器面板显示和隐藏的实用工具。下面我们将深入探讨其工作原理。

2 脚本结构

ControllerPanel: 这是一个公开的GameObject字段,用于引用要显示和隐藏的控制器面板。
isMouseOver: 一个布尔变量,表示鼠标是否位于面板上方。
isHiding: 另一个布尔变量,表示面板是否正在隐藏过程中。

3 方法解析

OnPointerEnter(PointerEventData eventData):
当鼠标光标进入ControllerPanel时,此方法被调用。
如果鼠标不在面板上且面板正在隐藏,将取消隐藏操作。
设置ControllerPanel为活动状态,使其可见,并更新isMouseOver为true。

OnPointerExit(PointerEventData eventData):
当鼠标光标离开ControllerPanel时,此方法被调用。
如果鼠标先前在面板上,则启动延时2秒后隐藏面板的过程,并更新相关变量。

HidePanel():
此方法用于实际执行面板的隐藏操作,即设置ControllerPanel为非活动状态。

using UnityEngine;
using UnityEngine.EventSystems;

public class VideoCtrlShowHide : MonoBehaviour, IPointerEnterHandler, IPointerExitHandler
{
    
    
    public GameObject ControllerPanel; // 要显示和隐藏的游戏对象

    private bool isMouseOver = false;
    private bool isHiding = false;

    public void OnPointerEnter(PointerEventData eventData)
    {
    
    
        Debug.Log("进入");
        if (!isMouseOver && isHiding)
        {
    
    
            CancelInvoke("HidePanel");
            isHiding = false;
        }
        ControllerPanel.SetActive(true);
        isMouseOver = true;
    }

    // 当鼠标离开挂载的游戏对象时调用
    public void OnPointerExit(PointerEventData eventData)
    {
    
    
        if (isMouseOver)
        {
    
    
            Invoke("HidePanel", 2f);
            isHiding = true;
            isMouseOver = false;
        }
    }

    void HidePanel()
    {
    
    
        ControllerPanel.SetActive(false);
    }
}

猜你喜欢

转载自blog.csdn.net/weixin_52051554/article/details/140459336