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);
}
}