UGUI教程之判断鼠标或者手指是否点击在UI上实现

2015年03月16日 15:47 0 点赞 0 评论 更新于 2025-11-21 17:17

在一些复杂的场景中,例如战斗场景,UI 和 3D 场景可能都需要响应触摸事件。若同时响应,当触摸 UI 时可能会对 3D 部分产生影响。为解决这一问题,在判断 3D 场景的响应之前,需要先判断手指是否点击在 UI 上。

在过去使用 NGUI 时,开发者需要自行发送射线进行判断。而现在使用 UGUI,系统提供了更为简便的方法。

以下是实现该功能的代码示例:

void Update()
{
if (Input.GetMouseButtonDown(0))
{
// 打印当前事件系统的游戏对象名称
Debug.Log(EventSystem.current.gameObject.name);
if (EventSystem.current.IsPointerOverGameObject())
{
// 若当前触摸在 UI 上,打印提示信息
Debug.Log("当前触摸在 UI 上");
}
else
{
// 若当前没有触摸在 UI 上,打印提示信息
Debug.Log("当前没有触摸在 UI 上");
}
}
}

在上述代码中,我们在 Update 方法里进行判断。当检测到鼠标左键按下时,首先通过 Debug.Log(EventSystem.current.gameObject.name) 打印当前事件系统的游戏对象名称。接着,使用 EventSystem.current.IsPointerOverGameObject() 方法判断当前触摸是否在 UI 上。若返回 true,则表示触摸在 UI 上,打印“当前触摸在 UI 上”;若返回 false,则表示没有触摸在 UI 上,打印“当前没有触摸在 UI 上”。

作者信息

menghao

menghao

共发布了 3994 篇文章